モデルが作成できたので、次はコントローラーとビューを実装しましょう!
コントローラーもジェネレーターで作成できます。
書式
$ bin/rails g controller コントローラー名 [アクション名 アクション名 アクショ...] [オプション]
さて、どの様なアクションが必要でしょう、作りたいのはタスクのCRUD機能です。
URLの例 | HTTPメソッド | アクション名 | 機能名 | 役割 |
---|---|---|---|---|
/tasks | GET | index | 一覧表示 | 全タスクを表示する |
/tasks/17 | GET | show | 詳細表示 | 特定のIDのタスクを表示する |
/tasks/new | GET | new | 新規登録画面 | 新規登録画面を表示する |
/tasks | POST | create | 登録 | 登録処理を行う |
/tasks/17/edit | GET | edit | 編集画面 | 編集画面を表示する |
/tasks/17 | PATCH,PUT | update | 更新 | 更新処理を行う |
/tasks/17 | DELETE | destroy | 削除 | 削除処理を行う |
URLやHTTPメソッドはユーザーのWebブラウザからアプリケーションに向けて特定したアクションに処理をさせる。
##★controllerを作ってみよう。
controllerのジェネレーターでアクションを指定すると、アクションと同名のビューも作ってくれます。
★ちょっとしたコツ★
HTTPメソッドがGETのアクションは同名のビューを使うことが多いと言う法則があって
HTTPメソッドがGETとなるアクション名をジェネレーターのコマンドの引数として指定するのが効果的。
上の表を参考に、GETアクションのindex,show,new,editの4つを指定してジェネレートコマンドをする。
$ bin/rails g controller tasks index show new edit
今回はパターン通りのルーティングを一括設定したいので、config/routes.rb
から4つのアクションの設定を消します。
#下記を消します。
get 'task/index'
get 'task/show'
get 'task/new'
get 'task/edit'
代わりに
resources :tasks
resourcesメソッドは上記表の全てのアクションに関するルーティングを一括で設定してくれます。
追加で、同じ場所にルートパスを設定します。
Railsのデフォルト画面ではなく、タスク一覧が表示される様にしてみましょう。
Rails.application.routes.draw do
root to: 'tasks#index'
resources :tasks