paperclip rails无法呈现图像的默认网址

时间:2013-11-03 03:43:23

标签: ruby-on-rails ruby-on-rails-4 paperclip

我有以下视图来显示拇指图像只有第一张图像

<% @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

错误是因为我没有上传此帖子的图片,但为什么它没有渲染默认图片

1 个答案:

答案 0 :(得分:0)

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

如果你想显示一些最小量的未上载图像的默认图像,你可以在创建post对象之后创建那些'uploads',并且瞧:因为上传对象在数据库中,但是没有图像数据在其中,它们将呈现默认值。

还有一个:将附件的名称命名为Model是如此暧昧。将附件命名为“image”或“file”会更好,因此url调用将为:

post.uploads.first.image.url(:thumb)