2017-10-07 109 views
6

我有一個使用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(儘管用戶是否將圖像添加到列表中)?

回答

1

由於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

  • 在您的模型中寫回調
  • before_create:assign_default_image 也許你需要before_update

    def assign_default_image 
        self.image[0] = "default.jpg" 
    end 
    
    +0

    你知道,如果carrierwave有一個內置的功能來照顧這? –

    +0

    找不到像這樣的東西... –

    相關問題