我正在尝试在CarrierWave上传器中设置CarrierWave的默认网址。为此,我想使用资产管道在uploaders/image_uploader.rb
中执行以下操作:
def default_url
IMAGE_PATH( 'question_mark.png')
端
但它失败了因为:undefined method
image_path'for:ImageUploader`
然后我尝试将include ActionView::Helpers::AssetTagHelper
添加到uploaders/image_uploader.rb
但收到此错误:undefined local variable or method
config'for:ImageUploader`
知道如何让image_path
助手在视图之外工作吗?
答案 0 :(得分:1)
我问了一个类似的问题here并得出结论,没有办法让任何*_path
或*_url
帮助者在模型中工作。我知道它绝对不应该完成(违反MVC等等),但它似乎根本无法完成......
我的问题是为Paperclip附件设置default_url
,我最终将其设置为我将image_tag
提供的路径(如果找到'image.png'
,则只需image.png
在app/assets/images
或public/images
)中,然后在访问时使用image_path
。这对你有用吗?
答案 1 :(得分:0)
不确定我到底想要做什么,最后解决了这个问题但是如果有人来这里想要在他们的模型中添加_path或_url助手,请执行以下操作:
class Post < ActiveRecord :: Base
include Rails.application.routes.url_helpers
# This is so you can use _url params
# you'll need to define the host in your config for it to work though
default_url_options[:host] = Rails.configuration.host
# ...
end
答案 2 :(得分:0)
我遇到了类似的问题,我通过在Rails 3.2中执行以下操作解决了这个问题。
我宣布了以下模块:
module MyApp::AssetHelper
def config
@config ||= ActionController::Base.config
@config.asset_host = 'http://whereveryouhostyour.assets' #not needed if you have this defined in your environment file
@config
end
def controller
ActionController::Base
end
end
我在模型中包含了以下帮助程序,我想使用asset_tag帮助程序
include Sprockets::Helpers::RailsHelper
include MyApp::AssetHelper
这使我可以在需要的地方调用asset_tag助手。