ルーティングネストってどんなときに使う?

 

オリジナルアプリケーションの追加実装でコメント機能を追加できたら良いなと思い、

勉強していました。

 

投稿してある写真にログインしている人はコメントを残せる機能です。

 

せっかく投稿した写真、みんなの反応、気になると思うんです。

 

そこで必要になってくるのが”ルーティングネスト”です。

 

 

 

プログラミング初心者がつまずきやすいところだと思うので、頑張ってシェアしていきたいと思います。

 

ルーティングにおけるネストとは、あるコントローラーのルーティングの中に、別のコントローラーのルーティングを記述することです。

親子関係を作るわけです。

 

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点です。