我有一個Rails引擎,它使用carrierwave並提供它自己的默認圖像。如何在Rails引擎中覆蓋carrierwave的default_url方法
我想在主機應用程序中覆蓋此默認圖像,因此需要覆蓋上傳器上的default_url
方法。
這似乎並不像看起來那麼簡單,我認爲它可能與如何裝載載波卸載器有關。打開課程並添加新版本的方法似乎不起作用。
任何想法如何實現這一目標?
我有一個Rails引擎,它使用carrierwave並提供它自己的默認圖像。如何在Rails引擎中覆蓋carrierwave的default_url方法
我想在主機應用程序中覆蓋此默認圖像,因此需要覆蓋上傳器上的default_url
方法。
這似乎並不像看起來那麼簡單,我認爲它可能與如何裝載載波卸載器有關。打開課程並添加新版本的方法似乎不起作用。
任何想法如何實現這一目標?
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
等
您可以覆蓋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
這改變了上傳的存儲位置,而不是默認圖像。 – benjaminjosephw
有多個版本,而不是VERSION_NAME一種解決方案,@mounted_as使用它像這樣
ActionController::Base.helpers.asset_path("dashboard/" + [@mounted_as, "file_name.png"].compact.join('_'))
你會得到的符號版本
示例
個version :person_image
@mounted_as將是:person_image
有樂趣=)
「打開類並添加方法的新版本似乎並沒有工作。」 (即,這正是我已經試過的) - 這裏的問題是理解如何在Rails引擎中定義此方法的情況下執行此操作。 – benjaminjosephw
這並不回答我的問題,但它可能對某人有所幫助,因此無論如何我都會獎勵賞金。 – benjaminjosephw