初めに
投稿一覧ページでそれぞれの投稿に紐付いているユーザ名や画像を表示できなかったので書きます。
問題
以下エラーに遭遇しました。
解決方法
エラー文から推測して、この辺りを調査しました。
① Viewファイルの誤字脱字
② Postsコントローラーのindexアクション内でインスタントメソッドuserの定義忘れ
③ インスタントメソッドの理解不足
②まで調査して、インスタンスメソッドが何をしているのか理解できていなかったので復習しました。復習を終えて、③が原因ではないと分かりました。そこで、こちらの記事を参考にデータベース周りを調べました。
全ての投稿データを取得して、id:1 の user_idがnilとid:2 のuser_idが1になっていることが分かりました。これは、開発の途中で投稿に紐ずくようにuser_idを追加したからです。なので、user_idが追加される前の投稿はnilとなっています。
rails console
posts = Post.all
id: 1,
content: "Ruby",
created_at: Wed, 17 Jan 2024 22:47:13.503984000 UTC +00:00,
updated_at: Wed, 17 Jan 2024 22:47:13.503984000 UTC +00:00,
user_id: nil>,
id: 2,
content: "JavaScript",
created_at: Wed, 17 Jan 2024 22:50:54.265051000 UTC +00:00,
updated_at: Wed, 17 Jan 2024 22:50:54.265051000 UTC +00:00,
user_id: 1>,
nilのデータが含まれていることが原因ということが分かったので、1度データベースをリセットしましょう。リセットすると、解消されました。
rails db:reset
終わりに
記事を参考にして分かったままにしないで言語化することが大切だと感じました。