0

我有以下视图仅显示第一张图片的缩略图

<% @posts.each do |post| %>
    <a href="#"><%= image_tag post.uploads.first.upload.url(:thumb) %></a>
<% end %>

在我的模型 uploads.rb 中,我设置了这样的默认网址

has_attached_file :upload,styles: { medium: ["500x400>",:jpg], thumb: ["150x100#",:jpg]}, default_url: '/assets/avatar.jpg', url: "/path/to/upload"

但我收到错误

undefined method `upload' for nil:NilClass

错误是因为我没有为这篇文章上传图片,但为什么它没有呈现默认图片

4

1 回答 1

0

这是因为您没有将任何上传对象链接到@posts 中的某个帖子对象。换句话说,有些帖子没有链接到任何上传对象,通常包含回形针的方法。

如果您想显示一些未上传图像的最小数量的默认图像,您可以在创建帖子对象后创建该数量的“上传”,瞧:因为上传对象在数据库中,但其中没有图像数据,他们将呈现默认值。

还有一个:将附件命名为与模型相同的名称是如此模棱两可。最好将附件命名为“图像”或“文件”,这样 url 调用将是:

post.uploads.first.image.url(:thumb)
于 2013-11-03T04:04:03.603 回答