Railsでの画像表示についてお聞きしたいです。
以下のように書いて、user_id:1でログインしている状態です。
画像については、user = User.allでimage_name: "1.jpg"と保存されているのを確認しています。
index.html.erb
rails5
1<div class="main posts-index"> 2 <div class="container"> 3 <% @posts.each do |post| %> 4 <div class="posts-index-item"> 5 <div class="post-left"> 6 <img src="<%= "/user_images/#{post.user.image_name}" %>"> 7 </div> 8 <div class="post-right"> 9 <div class="post-user-name"> 10 <%= link_to(post.user.name, "/users/#{post.user.id}") %> 11 </div> 12 <%= link_to(post.content, "/posts/#{post.id}") %> 13 </div> 14 </div> 15 <% end %> 16 </div> 17</div>
post_controller.rb
rails5
1 def index 2 @posts = Post.all.order(created_at: :desc) 3 end
post.rb
rails5
1class Post < ApplicationRecord 2 validates :content, {presence: true, length: {maximum: 140}} 3 validates :user_id, {presence: true} 4 5 def user 6 return User.find_by(id: self.user_id) 7 end 8 9end
しかし、表示を試みると2点に対して以下のエラーが表示されてしまいます。
rails5
1<img src="<%= "/user_images/#{post.user.image_name}" %>">
=> undefined method `image_name' for nil:NilClass
rails5
1<%= link_to(post.user.name, "/users/#{post.user.id}") %>
=> undefined method `name' for nil:NilClass
これはどのように解決すべきか、ご教授いただければ幸いです。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/12/24 00:46
2019/12/24 00:49
退会済みユーザー
2019/12/24 00:56
2019/12/24 01:17
退会済みユーザー
2019/12/24 01:32