0
0

More than 1 year has passed since last update.

投稿一覧画面からlink_toで会員詳細画面遷移しようとした際、開ける画面と開けない画面があり、開けない画面では「Couldn't find User with 'id'=6」のエラーが出ている

Posted at

1.前提条件

開発環境

Ruby:ruby 3.1.2
Rails:Rails 6.1.6.1
OS:Windows11 Home

実装状況

・deviceを導入し、ログイン機能実装
・ゲストログイン機能実装
・投稿機能実装(投稿一覧、投稿詳細ページ作成)
・会員詳細画面実装 ←今ココ

やりたいこと

投稿一覧画面にて投稿者の名前をそれぞれ押下すると、その会員の会員詳細画面へ遷移するようにしたい。

発生している事象

投稿一覧画面にて投稿者の名前をそれぞれ押下すると、開ける画面と開けない画面がある。
そして開けている画面は開きたい画面になっていない。
また開けない画面についてはエラーが発生している状況。

2.エラーメッセージの内容

image.png

②エラーメッセージ翻訳

エラーメッセージを翻訳する
 
 ”「id」=6 のユーザーが見つかりませんでした”

③エラーの原因を考える 

今回のエラーはidが見つからないよというエラーである。
発生している事象から考えてルーティングかlink_toが怪しそう。。。

3.エラー解決までの流れ

①ルーティングの記述を確認する

resources :users, only: [:show, :edit, :update]

問題なさそう。。

②サーバー起動し、「/rails/info/route」でルーティングを確認する

image.png
これも問題なさそう。。

③URLに直接「users/○○(1~6の数字)」を順番に入力し、挙動確認する

 users/1からusers/5までは開けたが、やはりusers/6が開けない
 しかも、その会員(その投稿をした会員)の会員詳細画面を表示したいのに、登録した会員id順で会員詳細画面が表示されている

④link_toの記述を確認する

 投稿者:<%= link_to outfit.user.nickname, user_path(outfit.id) %>

user_pathで持ってくるidがoutfit.id(服装のid)になっている!!
持ってきたいのはoutfit.id(服装のid)ではなくて、その投稿をした会員のidであるため、outfit.user.idですね!!

④link_toの記述を変更する

 投稿者:<%= link_to outfit.user.nickname, user_path(outfit.user.id) %>

この記述に変更したことでエラーは解除され、正しい画面が表示されるようになりました!

4.最後に

解決するのに2時間以上かかりました。。パスに渡すidによっては表示されたり表示されなかったりすることがわかりました。
そのため遷移先で正しい表示がされているかを確認したり、1ヵ所だけでなく複数箇所のリンクをクリックしてみて、確認した方が良いと感じました。
まだまだ理解不足と感じた1日でした。。引き続きコツコツと頑張ります!
最後まで読んでくださり、ありがとうございました!

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