shallowでルーティングを楽にしようとしたけどできなかった話
コードを書くのがはてブの方が簡単らしいので、こっちにおひっこし。
他の記事もあわせておひっこし。
これまでのあらすじ
railsでscaffoldでネストしたらいろいろルート通らなくなってる。
わるさをしてるのは主にネストで子になってるMusic部分。いろいろカッツ・アイ
したのが多分原因。
けどもしかしたらshallowでなんとかなるかも。
(参照)Rails - resources を nest するときは shallow を使うと幸せになれる - Qiita
というわけでshallowを使ってみる
resources :artists, shallow: true do resources :musics
結果としては、うまくルートは通ったんだけれども、今度はshowのパラメータでおかしくなる。
# GET artists/xx/musics/1 # GET artists/xx/musics/1.json # => params = {artist_id:xx, id:1} def show @artist = Artist.find(params[:artist_id]) #Artistのインスタンス変数 @music = @artist.musics.find(params[:id]) #Musicのインスタンス変数(大文字にならないことに注意) end
artistのパラメータをネスト構造前提で引っ張ってきてたので、パラメータねえぞって言われる。
で、よくよく考えてみたところ。MusicのidはArtistのidに依存関係があるので、
どっちにしてもパラメータつけないとだめかもしれん。
というわけで、shallowをつかうのはやめましたとさ。