[Rails] User_idが取得できません

Railsアプリでユーザーのマイページを作っているのですが、
Couldn't find User without an ID エラーを解決できずにいます。

前提
: railsアプリのマイページを開発中です。
: 以下コードを参考にしています。
https://github.com/FarStep131/follow_app/blob/main/app/views/users/show.html.erb
: 上記リンクにはフォローボタンの処理などが書かれていますが、
自分はまだフォロー処理のコントローラーは作っていません。
: まずは前段階として、ユーザーの名前を取得、表示するだけのコードを書こうと
思っています。

実現したいこと
: 下記コードでuser_idを取得する想定です。

home_controller.rb

@user = User.find(params[:user_id])

発生している問題・エラーメッセージ
ActiveRecord::RecordNotFound at /home/mypage
Couldn't find User without an ID

Request info
Request parameters
{"controller"=>"home", "action"=>"mypage"}

期待した処理結果
以下コードでユーザーの名前が表示できると思っていました。

mypage.html.erb

<%= @user.name %>

参考動画:https://www.youtube.com/watch?v=iAIRNEsA-7g&t=590s&ab_channel=Farstep%E3%80%90%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%AC%9B%E5%BA%A7%E3%80%91

ターミナルの表示
ActiveRecord::RecordNotFound - Couldn't find User without an ID:
app/controllers/home_controller.rb:37:in `mypage'

Started POST "/__better_errors/3ce4861ff68a121e/variables" for ::1 at 2022-10-17 16:34:15 +0900
Bookmark Load (1.0ms) SELECT bookmarks.* FROM bookmarks WHERE bookmarks.user_id = 7 /* loading for inspect */ LIMIT 11
↳ (eval):72:in `block in render'

該当のソースコード

Home.controller.rb

def mypage @bookmarks = Bookmark.where(user_id: current_user.id) @user = User.find(params[:user_id]) end

Mypage.html.erb

<%= link_to 'topへ戻る', root_path %> <br><%= @user.name %> エラー原因: @user = User.find(params[:user_id])

自分で調べたことや試したこと
3つの記事にあった解決策を試みましたが、いずれも解決に至りませんでした。
1つ目: ルーティングをresource→resourcesに書き直す
→書き直したが上記のエラーメッセージが変わらず表示されました。
https://qiita.com/kaichi_lvg/items/c5b8d594929ed8047966#%E6%8C%99%E5%8B%95%E7%A2%BA%E8%AA%8D

2つ目: Item.find(params[:id])→Item.find(params[:item_id]) に修正
→書き直したが上記のエラーメッセージが変わらず表示されました。
https://qiita.com/WI2rz/items/ae291c52af78ad0467f8

解決策3:findではなくfind_by メソッドで書く
:https://ichigick.com/record-not-found-without-id/
→なぜか今のユーザーネームではなく違うユーザーの名前が表示されました。

使っているツールのバージョンなど補足情報
パソコン:MacBook Pro
バージョン:rails6

その他何か足りない情報あればご指摘ください。

コメントを投稿

0 コメント