こちらで質問していて恐縮なのですが、続き的なご質問をさせてください。
Ruby on Railsでブログのようなサイトを作っています。
下記が設定です。
ブログサイトは記事(Article)がたくさん集まっています。
記事にはコメント(Post)がたくさん紐付いています。
コメントはログインしなくても見ることができますが、ログインしなければコメントを投稿することができません。コメントには画像(PostImage)を添付することができます。
今回は、この画像を集めて表示したいという相談なのですが、エラーで参っています。
undefined method `post_images' for nil:NilClass <% @post.post_images.each do |post_image| %>
##【追記】試してみたこと
@articleからidを持ってくることにして、下記を試してみたのですが...
ruby
1 <%= @article.posts.each do |s| %> 2 <li><%= image_tag s.post_images %></li> 3 <% end %>
htmlは下のように出てきました。
html
1 <li><img src="/images/#<PostImage::ActiveRecord_Associations_CollectionProxy:0x007feda29a8ca0>" alt="#<postimage::activerecord associations collectionproxy:0x007feda29a8ca0>" /></li>
また、下記が自分としては一番しっくりきてるように思うのですが、
RUby
1 <%= @article.posts.post_images.each do |s| %> 2 <li><%= image_tag s.images.url unless post_images.images.blank? %></li> 3 <% end %>
ruby
1undefined method `post_images' for #<Post::ActiveRecord_Associations_CollectionProxy:0x007feda2c0ce10> 2
No Method Errorとなってしまい・・・・
##該当するソースコード
ビュー
ruby
1 <% @post.post_images.each do |post_image| %> 2 <li><%= image_tag post_image.image_url(:image) unless post_image.image.blank? %></li> 3 <% end %>
post_imageモデル
ruby
1class PostImage < ApplicationRecord 2 belongs_to :post 3 mount_uploader :image, ThumbnailUploader 4end
ビューが出ている記事(Article)コントローラー
ruby
1class ArticlesController < ApplicationController 2 before_action :set_article 3 before_action :set_post 4 5 def post 6 @post = @article.posts.paginate(page: params[:page], :per_page => 10) 7 end 8 9 def show 10 @post = Post.find(params[:id]) 11 end 12 13 private 14 15 def set_article 16 @article = Article.find(params[:id]) 17 end 18 19 def set_post 20 if signed_in? 21 @comment = current_user.posts.build 22 @comment.post_images.build 23 end 24 end 25end
あなたの回答
tips
プレビュー