🍈
Rails ルーティングのネスト
今日のミス
いいね機能の作成途中で、book indexページのいいねを押すとエラーに、、
なぜbook_idが渡されていないか?
👇
ルーティングをネストしていなかったから!!
ルーティングのネストとは
あるコントローラへのルーティングの記述の中に、別のコントローラへのルーティングを記述すること。
resources :books, only: [:index,:show,:edit,:create,:destroy,:update] do
resource :favorites, only: [:create, :destroy]
end
親のresourcesで指定したコントローラ名に、子のresourcesで指定したコントローラ名が続くURLが生成された!
このような親子関係を、「ネストする」と言う。
ネストしたURLを作成することで
params[:book_id]でBookのidが取得できるようになった🙆🏻♀️
resouceについて
resourcesを単数形にすると、/:idがURLに含まれなくなる!!
いいね機能の場合は「1人のユーザーは1つの投稿に対して1回しかいいねできない」という仕様なので、ユーザーidと投稿(book)idが分かれば、どのいいねを削除すればいいのかが特定できる!
そのため、いいねのidはURLに含める必要がないURLに/:idを含めない形にしている。
resourceは「それ自身のidが分からなくても、関連する他のモデルのidから特定できる」といった場合に用いることが多い。
いいね機能、コメント機能、フォロー機能、検索機能で
アソシエーションの理解の大事さを痛感した、、!
調べながら自力でやったもののコピペばっかりしちゃって
理解しきれていない気がするから再度復習しよう。
明日はキャリアガイダンスと私用があるから
早く起きて勉強時間確保するぞ。
1ヶ月が早い早い。
パワーー
Discussion