Rails基礎⑤ コントローラーの作成
コントローラーの作成
$ rails g controller [コントローラー名]
Controllerでは複数のデータを扱うため、コントローラー名は複数形、頭文字は大文字にすること。
主に、controllerディレクトリにxxx_controller、viewディレクトリに新しいディレクトリ、テスト用のファイルなどが生成される。
ルーティングの設定
どのURLにアクセスされたときに、controllerのどのメソッドを実行するかを設定していく作業のこと。
config/routes.rb
に記述していく。
一般的な処理を一気に設定したい場合
resources :名称[複]
なので、
Rails.application.routes.draw do resources :コントローラー名 end
でOK。
これで、 index,show,new,create,edit,update,delete の7種類のアクションが一気に定義することができる。
特定のルーティングのみを指定したい場合、
Rails.application.routes.draw do resources :コントローラー名, only: [:index, :show] end
のようにonlyを使用する。
resource
resources とはまた別物となる。 indexアクションが定義されない、URI Pattersにidが含まれなくなる、といった違いがある。
Rails.application.routes.draw do resource :名称[単] end
ルーティングの確認
$ rails routes
で一覧を確認できる。
Prefix | Verb | URI Pattern | Controller#Action |
---|---|---|---|
posts | GET | /posts(.:format) | posts#index |
だとすると、「/postsでgetでアクセスしてきたら、postsコントローラーのindexアクションを実行」という意味。
参考
controllerにアクションを記述する
app/controller/名称_controller
に記述していく。
メソッドの形で記述していく。 アクション名=メソッド名なので、アクションを作成する場合はアクション名のメソッドを定義する必要がある。
アクションを表すメソッドはpublicで作成する必要がある。(Rubyはデフォルトがpublicとなっている)
Postsを作成日時の新しい順に並べてすべて取得したい場合は以下のように記述する。
def index @posts = Post.all.order(created_at: 'desc') end