2014-03-19 45 views
1

我有一個Rails引擎,它使用carrierwave並提供它自己的默認圖像。如何在Rails引擎中覆蓋carrierwave的default_url方法

我想在主機應用程序中覆蓋此默認圖像,因此需要覆蓋上傳器上的default_url方法。

這似乎並不像看起來那麼簡單,我認爲它可能與如何裝載載波卸載器有關。打開課程並添加新版本的方法似乎不起作用。

任何想法如何實現這一目標?

回答

0

The documentation指出重寫uploader類中的default_url方法應該是微不足道的。實際上,default method是空白的。

class MyUploader < CarrierWave::Uploader::Base 
    def default_url 
    ActionController::Base.helpers.asset_path("fallback/" + [version_name, "default.png"].compact.join('_')) 
    end 
end 

如果這不起作用,可能有一些其他的問題,如需要重新啓動服務器,或運行bundle clean

+0

「打開類並添加方法的新版本似乎並沒有工作。」 (即,這正是我已經試過的) - 這裏的問題是理解如何在Rails引擎中定義此方法的情況下執行此操作。 – benjaminjosephw

+0

這並不回答我的問題,但它可能對某人有所幫助,因此無論如何我都會獎勵賞金。 – benjaminjosephw

-1

您可以覆蓋store_dir方法來改變圖像的URL。

class MyUploader < CarrierWave::Uploader::Base 
    def store_dir 
    'public/my/upload/directory' 
    end 
end 

,你可以在這裏找到:

https://github.com/carrierwaveuploader/carrierwave#changing-the-storage-directory 
+0

這改變了上傳的存儲位置,而不是默認圖像。 – benjaminjosephw

0

有多個版本,而不是VERSION_NAME一種解決方案,@mounted_as使用它像這樣

ActionController::Base.helpers.asset_path("dashboard/" + [@mounted_as, "file_name.png"].compact.join('_')) 

你會得到的符號版本

示例

version :person_image 

@mounted_as將是:person_image

有樂趣=)