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 コメント