ルーティングネストってどんなときに使う?
オリジナルアプリケーションの追加実装でコメント機能を追加できたら良いなと思い、
勉強していました。
投稿してある写真にログインしている人はコメントを残せる機能です。
せっかく投稿した写真、みんなの反応、気になると思うんです。
そこで必要になってくるのが”ルーティングネスト”です。
プログラミング初心者がつまずきやすいところだと思うので、頑張ってシェアしていきたいと思います。
ルーティングにおけるネストとは、あるコントローラーのルーティングの中に、別のコントローラーのルーティングを記述することです。
親子関係を作るわけです。
Rails.application.routes.draw do resources :親となるコントローラー do resources :子となるコントローラー end end
ある人が写真を投稿した時に、その投稿に対しコメントしたい時、postコントローラーのルーティングの中に、commentsコントローラーの記述を書くことで、どの投稿に紐づいたコメントなのかをURLで判断できるようにしています。
Rails.application.routes.draw do resources :posts do resources :comments, only: :create end end
doとendで挟むことで、ルーティングをネストさせることができました。
rails routesでURLを確認できます。
ターミナル
1 2 3 4 |
Prefix Verb URI Pattern Controller#Action
# 中略
post_comments POST /posts/:post_id/comments(.:format) comments#create
|
ルーティングをネストさせるメリットは、「URL設計」と「関係性があるもの同士の紐付け」の2点です。