#####ユーザー詳細画面から、そのユーザーがいいねした投稿一覧ページを表示させたいと思ったときえに、paramsでユーザーのidを受け取りたかったけどurlにidが入っていない!
そんなときどうやってurlにユーザーidを入れるのか?
###routes.rbでusersにdoをつけて入れ子構造にすればいい!
get 'user_likes' => 'users#user_likes' as: user_likes
最初は上記のようにユーザーがいいねした投稿一覧を表示するページのurlを作成していた
しかしこの書き方だと、rails routesしてみるとurlは
/users/user_likes
こうなっているはず。これだとidが入っていないためparamsでidを取得することはできない
そこで resources users のルーティング内に入れ子構造にしてurlを入れてみる
resources :users do
get 'user_likes' => 'users#user_likes'
end
こうすることでusersが親、作成したurlが子になり rails routesで確認してみると
/users/:user_id/user_likes
今度はこうなっているはず! :user_idが追加され、urlの中にユーザーのidを入れることができた
名前付きurlも user_user_likes となり、user_user_likes_pathで指定できる
コントローラーでメソッドを作り
@user = User.find(params[:user_id])
みたいな感じでurlからユーザーのidを受け取るといい
ちなみに、(params[:id])じゃないのは rails routes で確認したurlが /users/:user_id/user_likes で :user_id のため、ここが :id なら
paramsで取得する際は (params[:id])になる