前提・実現したいこと
プログラミング学習3ヶ月目の初心者です。
とても基本的なエラー内容かもしれませんが、ご回答いただけますと幸いです。
現在、自身のポートフォリオとして、Ruby on Railsを使用し、
「就活マッチングサービス」を作成中です。
表題の通りですが、求職者のアピール一覧(つぶやき一覧のようなもの)に、
投稿した本人のアイコン画像や、ニックネームなどをviewに表示させたい中で、
以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
▼localhost:3000のブラウザ上にて(こちらの16番目のラインにてエラー発生)
NoMethodError in Posts#index undefined method `image_name' for nil:NilClass Extracted source (around line #16): 14<div class="time_line_body_header"> 15 <div class="user_time_line_image"> 16 <img src="<%= "/user_icon_images/#{post.user.image_name}" %>"> 17 </div> 18 <div class="user_name"> 19 <%= link_to(post.user.nickname, "#") %>
▼ページアクセス時のターミナル上にて
ActionView::Template::Error (undefined method `image_name' for nil:NilClass): 13: <div class="time_line_body"> 14: <div class="time_line_body_header"> 15: <div class="user_time_line_image"> 16: <img src="<%= "/user_icon_images/#{post.user.image_name}" %>"> 17: </div> 18: <div class="user_name"> 19: <%= link_to(post.user.nickname, "#") %> app/views/posts/index.html.erb:16:in `block in _app_views_posts_index_html_erb__4186843746045429960_70347610308620' app/views/posts/index.html.erb:12:in `_app_views_posts_index_html_erb__4186843746045429960_70347610308620'
該当のソースコード
views/posts/index.html.erb
ruby
1<div class="time_line"> 2 <% @user_posts.each do |post| %> 3 <div class="time_line_body"> 4 <div class="time_line_body_header"> 5 <div class="user_time_line_image"> 6 <img src="<%= "/user_icon_images/#{post.user.image_name}" %>"> 7 </div> 8 <div class="user_name"> 9 <%= link_to(post.user.nickname, "#") %> 10 </div> 11 </div> 12~~~~~~~~~~~以下にはアピール内容(呟き内容)などのソースがある~~~~~~~~~~~~
models/post.rb
ruby
1class Post < ApplicationRecord 2 validates :user_id, {presence: true} 3 4 def user 5 return User.find_by(id: self.user_id) 6 end 7end
controllers/posts_controller.rb
ruby
1class PostsController < ApplicationController 2 def index 3 @user_posts = Post.all.order(created_at: :desc) 4 end
ソースを見ていただいた様に、
モデルにインスタンスメソッドを定義し、それをviewのhtmlで、postに対して呼び出したいのですが、なかなかうまく行きません。。
試したこと
・railsサーバの再起動
・usersテーブル上に、確実にimage_nameカラム、nicknameカラムがあるか確認
・postsテーブル上に、確実にuser_idカラムがあるか確認
・rails bd:migrateでデータベースを再度保存
・ログイン中アカウントのuser_idや、image_nameなど、
postsテーブルカラム、usersテーブルカラムのそれぞれのデータの格納漏れがないか確認。
補足情報(FW/ツールのバージョンなど)
OS:macOS 10.15.2
Ruby ver: 2.5.0p0
Rails ver: 5.2.4.1
エディタ:Sublime Text
回答1件
あなたの回答
tips
プレビュー