0
0

More than 3 years have passed since last update.

railsルーティングオプション「ネスト」について

Last updated at Posted at 2020-03-04

ネストオプションについて

ネストするとルーティングを「/boooks/本の投稿のid/favorite/いいねのid」のようにIDの後にIDを持ってくることができます。

例えば以下のテーブルとコントローラー名で本の投稿に「いいね」機能をつける場合。

コントローラ名

本の投稿「books」
いいね機能「favorites」

テーブル

Untitled Diagram.png

いいね機能関連のルーティングを「/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」とできました。

0
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
0
0