resourcesメソッドについて
Railsでよく用いられる7つのアクションに対するルーティングを生成してくれるメソッド。
resourcesメソッドを使わない場合は
以下の様にアクションごとに
get 'tweets' => 'tweets#index'
get 'tweets/new' => 'tweets#new'
post 'tweets' => 'tweets#create'
delete 'tweets/:id' => 'tweets#destroy'
patch 'tweets/:id' => 'tweets#update'
get 'tweets/:id/edit' => 'tweets#edit'
get 'users/:id' => 'users#show'
get 'tweets/:id' => 'tweets#show'
を宣言する必要がある。
resourcesメソッドを下記の様に宣言すると
上記の7つ分の宣言と同じ扱いになる。
Rails.application.routes.draw do
resources :tweets#コントローラー名
end
Rails.application.routes.draw do
resources :tweets, only[:index]
end
# オプションを指定し、任意のルーティングのみを作らせることもできる。
ネスト
またresoucesメソッドを使うことで
ネスト(入れ子構造)のルーティングを作成することができる。
resources :tweets do
resources :comments, only: [:create]
end
上記のように書くことで、tweetsのルーティングに
commentsへのルーティングを追加することができました。
ネストする意味
ネストをする必要がよく分からなかったので、
調べた上での自分の認識を書いて置こうと思います。
例えば、一つのツイートに対して、コメントを残すことできる
アプリケーションの場合で考える。
ネストなしの場合(画像はイメージ)

tweetsとcommentsで処理の流れが独立している。
そのためcommentsはtweetsの情報を持つことができないので
どのツイートに対するコメントなのか結びつけができない。
ネストありの場合(画像はイメージ)

ネストをすることで、commentsのルーティングはtweetsのルーティング処理上のcommentsであることを認識することができる。
そのためcommentsはtweetsの情報を受取ることができるので
どのツイートに対するコメントなのか結びつけることができる。