ルーティングのネスト
- ルーティングのネストとは、段階に分けてルーティングを記述すること
書き方の例
Rails.application.routes.draw do
resources :tweets do
resources :comments, only: [:create]
end
end
メリット
-
ルーティングの記述をネストさせるとURLの階層構造ができる。
上記のようにルーティングした場合のURL
/tweets/id(数字)/comments
このようにどのツイートに対してのコメントなのかが一目でわかる。 -
パラメーターに親要素のカラムを入れることができる
ちょっと分かりにくいので使わなかったらどうなるか↓
使わなかったら...
例)
Rails.application.routes.draw do
resources :tweets
resources :comments
end
html.erb
<%= form_with 'hoge', comments_path, method: :post %>
comments_pathにはどのツイートのコメントなのかを表すパラメーターがない
コメントコントローラーでは
def create
@tweet = Tweet.find(params [:tweet_id])
@comment = @tweet.comment.new
end
上のようなtweet_idをパラメーターとして持たせることができない。