我有一个使用Carrierwave的标准图像上传器。我也在使用Postgres。所以这就是我的迁移看起来像将JSON添加为图像:
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(无论用户是否在列表中添加图像)?
答案 0 :(得分:2)
由于Carrierwave没有帮助解决这个问题,也许你可以使用像写帮助器或回调这样的工作。 以下是您可能会喜欢的一些建议。
module CarrierwaveHelper def render_image_url(images, index) return "Default.jpg" if index == 0 images[index].url end end
只需在视图中调用render_image_url(images,0)而不是图像[0] .url
before_create:assign_default_image 或者你可能需要before_update
def assign_default_image
self.image[0] = "default.jpg"
end