LoginSignup
0
0

More than 1 year has passed since last update.

ルーティング member でネストする場合としない場合

Posted at

きれいなルーティングで悩んだ

ranking テーブルがあって、その ranking テーブルの動的な ID を含む
ranking_item コントローラーへの URL を作りたかった

ranking_itemmember で囲ってやるといい感じになった。

けどそれだと致命的にだめだったので備忘録

開発環境

ruby 2.6.5
Ruby on Rails 5.2.5

①member でネストしない場合

  resources:rankings do
    resources :ranking_items
  end

生成される URL は

Image from Gyazo

まあいいんだけどなんかなあってかんじ
外側の rankings のルーティングがいらないんだけどつくられちゃってる

② member でネストしてやる場合

  resources:rankings do
    member do
      resources :ranking_items
    end
  end

生成される URL は
Image from Gyazo

きれい。
外側の ranking_item に対してはルーティングが作られず、内側の ranking_items に対してだけルーティングが生成されている
いい感じ

しかしこれはだめ

:id がおなじ。これだと paramsrankings の動的な id をとりだせない。


基本的には上のケースだと①しかないのかと思う
member の使い方に関しては基本的な認識が間違っている気がする

本来は ranking に関しての crud 機能はいらなくて
ネストするだけにしたいのだけど。

ただ namespace とか scope 使うと 動的な :ranking_id が生成できない

shallow とか使ってもなんか微妙

いくら探してもいい感じのメソッドがないから
設計がそもそも間違っているさえある

難しい

追記

以下のように

 resources :rankings, only: %i[] do
    resources :ranking_items
 end

外側の resources にだけ only の空配列を与えてやると

Image from Gyazo

ほしいルーティングだけ生成された。
これが今のとこの最適解かも

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