我有以下视图来显示拇指图像只有第一张图像
<% @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
错误是因为我没有上传此帖子的图片,但为什么它没有渲染默认图片
答案 0 :(得分:0)
这是因为您没有将任何上传对象链接到@posts中的某个帖子对象。换句话说,有一些帖子没有链接到任何上传对象,它通常包含Paperclip的方法。
如果你想显示一些最小量的未上载图像的默认图像,你可以在创建post对象之后创建那些'uploads',并且瞧:因为上传对象在数据库中,但是没有图像数据在其中,它们将呈现默认值。
还有一个:将附件的名称命名为Model是如此暧昧。将附件命名为“image”或“file”会更好,因此url调用将为:
post.uploads.first.image.url(:thumb)