2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[Rails]ルーティングのネストとは?

Posted at

背景

Ruby on Rails にてアプリ作成の復習中に躓きましたので
こちらに備忘録として投稿いたします。

ルーティングのネストとは?

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

例えば、twitterのようなアプリがあったとします。
あるツイートに対して、たくさんのコメントがUPされますが、
どのツイートに対してのコメントかを判別する必要が出てきます。
それを実装するために、ルーティングをネストさせます。

具体的な記述の仕方

Rails.application.routes.draw do
  resources :親となるコントローラー do
    resources :子となるコントローラー
  end
end
resources :tweets do
    resources :comments, only: :create
end

このように記述することにより、どのツイートに対してのコメントかというルーティングが作成されます。
ari.png

ルーティングをネストさせる一番の理由は、アソシエーション先のレコードのidをparamsに追加してコントローラーに送るためです。

この:tweet_idの箇所へ、コメントと結びつくツイートのidを記述すると、paramsのなかにtweet_idというキーでパラメーターが追加され、コントローラーで扱うことができます。

ネストしなかったら?

ネストしなかったら、どのツイートに対するコメントなのかを判別できなくなります。
nasi.png

まとめ

ルーティングをネストすると・・・
-URLの階層構造ができる(「/tweets/tweet_id/comments」など)
-関係性のあるもの同士を紐づけることができる(あるツイートとそれに対するコメントなど)

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?