如何在Carrierwave中设置图片[0]的默认网址?

如何在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在这个问题上没有帮助,所以你可以使用像写这个工作的帮手或回调之类的东西。 以下是您可能会喜欢的一些建议。

  1. 写辅助
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

  1. 在您的模型中写回调
  2. before_create:assign_default_image 也许你需要before_update

    def assign_default_image 
        self.image[0] = "default.jpg" 
    end 
    
开始=”>
+0

你知道,如果carrierwave有一个内置的功能来照顾这? –

+0

找不到像这样的东西... –