#ネストオプションについて
ネストするとルーティングを「/boooks/本の投稿のid/favorite/いいねのid」のようにIDの後にIDを持ってくることができます。
例えば以下のテーブルとコントローラー名で本の投稿に「いいね」機能をつける場合。
###コントローラ名
本の投稿「books」
いいね機能「favorites」
いいね機能関連のルーティングを「/boooks/book_id/favorite/favorite_id」
としたいです。
この場合、以下のようにネストせずにルーティングを行うと。
routes.rb(ネストして無い場合)
resources :books
resources :favorites, only: [:create, :destroy]
ターミナルで「rails routes」を実行。
ネストしてない場合
favorites POST /favorites(.:format) favorites#create
favorite DELETE /favorites/:id(.:format) favorites#destroy
このように、「/boooks/book_id/favorite/favorite_id」とはならないです。
#ルーティングにネストオプションを追加する
ネストを追加するには以下のようにルーティングを記述します。
routes.rb(ネストオプションを追加)
resources :books, only: [:index, :new, :create, :show, :edit, :destroy, :update] do
resources :favorites, only: [:create, :destroy]
end
ターミナルで「rails routes」を実行。
ネストさせた後
book_favorites POST /books/:book_id/favorites(.:format) favorites#create
book_favorite DELETE /books/:book_id/favorites/:id(.:format) favorites#destroy
ちゃんと「/boooks/book_id/favorite/favorite_id」とできました。