0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Rails urlにユーザーのidが欲しい時!!

Posted at

#####ユーザー詳細画面から、そのユーザーがいいねした投稿一覧ページを表示させたいと思ったときえに、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])になる

0
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?