如何在Carrierwave中设置图片[0]的默认网址?
问题描述:
我有一个使用Carrierwave的标准图像上传器。我也在使用Postgres。因此,这是我的移民看起来像添加图像作为JSON:如何在Carrierwave中设置图片[0]的默认网址?
class AddImagesToListings < ActiveRecord::Migration[5.1]
def change
add_column :listings, :images, :json
remove_column :listings, :image
end
end
我想使图像[0]总有一些图像,但它似乎像Carrierwave文档只涉及此单文件上传。现在,这里是我的DEFAULT_URL方法:
def default_url(*args)
ActionController::Base.helpers.asset_path("default/" + ["default.jpg"].compact.join('_'))
end
这是工作时,我只用了:形象,但现在还不是。有没有什么方法可以为图像[0]设置默认值,以便我获得每个列表的有效图像[0] .url(尽管用户是否将图像添加到列表中)?
答
由于Carrierwave在这个问题上没有帮助,所以你可以使用像写这个工作的帮手或回调之类的东西。 以下是您可能会喜欢的一些建议。
- 写辅助
module CarrierwaveHelper def render_image_url(images, index) return "Default.jpg" if index == 0 images[index].url end end
和简单地调用render_image_url(图像,0)中的视图,而不是图像[0] .URL
- 在您的模型中写回调
before_create:assign_default_image 也许你需要before_update
def assign_default_image
self.image[0] = "default.jpg"
end
你知道,如果carrierwave有一个内置的功能来照顾这? –
找不到像这样的东西... –