1.前提条件
開発環境
Ruby:ruby 3.1.2
Rails:Rails 6.1.6.1
OS:Windows11 Home
実装状況
・deviceを導入し、ログイン機能実装
・ゲストログイン機能実装
・投稿機能実装(投稿一覧、投稿詳細ページ作成)
・会員詳細画面実装 ←今ココ
やりたいこと
投稿一覧画面にて投稿者の名前をそれぞれ押下すると、その会員の会員詳細画面へ遷移するようにしたい。
発生している事象
投稿一覧画面にて投稿者の名前をそれぞれ押下すると、開ける画面と開けない画面がある。
そして開けている画面は開きたい画面になっていない。
また開けない画面についてはエラーが発生している状況。
2.エラーメッセージの内容
②エラーメッセージ翻訳
エラーメッセージを翻訳する
”「id」=6 のユーザーが見つかりませんでした”
③エラーの原因を考える
今回のエラーはidが見つからないよというエラーである。
発生している事象から考えてルーティングかlink_toが怪しそう。。。
3.エラー解決までの流れ
①ルーティングの記述を確認する
resources :users, only: [:show, :edit, :update]
問題なさそう。。
②サーバー起動し、「/rails/info/route」でルーティングを確認する
③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日でした。。引き続きコツコツと頑張ります!
最後まで読んでくださり、ありがとうございました!