我有一个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