親から子へ子から親へ引き継がれるルーティングネスト

Ruby on Railsで誰もがぶち当たる壁

 

showアクションってダジャレなのでは?って悩みながら日々過ごしていると思います。

 

実際にはレコードの内容を表示するアクションです。詳細とshow?内容が始まる=showが始まる?みたいな・・・・

 

そしてこのshowアクション内にコメント機能など、新たにレコード内容に紐つけされた。アソシエーションなデータを保存したりする時に当たらなるコントローラーを作成。コントローラーへのルーティングをする時に、元のレコードと関連づけて作らなくてはいけない。それがルーティングネスト構造!

resources :suzuki, only: [:index, :new, :create, :destroy, :show] do
resources :yamadas, only: [:create, :destroy]
end

 

resourcesにdoとendを足してrubyのwhileやeach分のような形にする構造にする事で今まで他人同士だったルーティング親子の契りをちぎる訳です。上では山田が鈴木の子供に養子縁組成立!

 

この時に散々悩んで苦しんだ内容が、子の中でデータの作成、削除を行う。アクションした際にshowアクションで指定したページ(show.html.erb)に戻ってくるにはどう記述すれば良いのか?

 

答えは以下の通りでした

 
 redirect_to "/suzukis/#{yamada.suzuki_id}"
 

 

子供のコントローラー内で行われるアクション作業をする際、親のshowのビューに戻すには親のURLと関連した子供に紐づいた親のIDと書くようです。なんとなく親子って考えると親を書いて子ってなりたくなり

 

suzuki.yamdaと書いたりしたり、他の方法試したり右往左往しました。このコントローラーからリダイレクトする時には子と紐ついている親と描くのが正しい様です。