CarrierWave“default_url”包含多个图像

时间:2017-08-01 10:40:24

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

我有一个带有default_url方法的ImageUploader类,如下所示:

def default_url(*args)
   ActionController::Base.helpers.asset_path("fallback/default.png")
end

在我的模型中,我安装了多个ImageUploader

class Model < ActiveRecord::Base
   mount_uploaders :images, ImageUploader
end

这些图像是可选的,用户可以选择不上传它们。在这种情况下,model.images数组为空

model.images = []
model.images[0] = nil

现在,当我尝试在这样的视图中访问图像时,

<img src=<%= model.images[0].url %> class="media-object" style="width:256px">

,它会抛出nilClass错误,这是完全可以理解的,因为model.images [0]为零。 我的问题是,如果在多重上传设置中没有上传图片,如何在我的视图中调用default_url调用?

可以在创建/编辑记录时完成吗?

我不喜欢在视图中使用rescue,因为我认为默认的功能已经存在于CarrierWave中并且应该使用。感谢。

PS:我使用的是Rails 4.2.4。

1 个答案:

答案 0 :(得分:-1)

<img src=<%= model.try(:images).first.url %> class="media-object" style="width:256px">

ruby​​&gt; 2.3

<img src=<%= model.images&.first&.url %> class="media-object" style="width:256px">