Ruby on rails 3.1 Rails 3.1资产管道外部视图
我试图在CarrierWave上传程序中设置CarrierWave的默认url。为此,我想使用资产管道在Ruby on rails 3.1 Rails 3.1资产管道外部视图,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails 3.1,Asset Pipeline,我试图在CarrierWave上传程序中设置CarrierWave的默认url。为此,我想使用资产管道在uploaders/image\u uploader.rb中执行以下操作: def默认url 图像路径('question\u mark.png') 结束 但是它失败了,因为:ImageUploader的未定义的方法` 然后我尝试将include ActionView::Helpers::AssetTagHelper添加到uploaders/image\u uploader.rb中,但出现以下
uploaders/image\u uploader.rb中执行以下操作:
def默认url
图像路径('question\u mark.png')
结束
但是它失败了,因为:ImageUploader的未定义的方法`
然后我尝试将include ActionView::Helpers::AssetTagHelper
添加到uploaders/image\u uploader.rb
中,但出现以下错误:未定义的局部变量或方法
config'for:ImageUploader`
你知道如何让图像路径
助手在视图之外工作吗?我问了一个类似的问题,并得出结论:没有办法让任何*\u路径
或*\u url
助手在模型中工作。我知道这是绝对不应该做的(违反MVC等等),但似乎根本做不到
我的问题是为回形针附件设置default\u url
,最后我将其设置为我将提供给image\u标签的路径(如果image.png
位于app/assets/images
或public/images
,则只需'image.png'/code>)然后在访问时使用image\u path
。这对你也有用吗?我不确定我在这里到底想做什么,最终解决了这个问题,但如果有人来这里想在他们的模型中添加_路径或_url帮助程序,请执行以下操作:
class Post 包括Rails.application.routes.url\u帮助程序
#这样您就可以使用_url参数了
#不过,您需要在配置中定义主机才能使其正常工作
默认\u url\u选项[:主机]=Rails.configuration.host
# ...
结束
我遇到了一个类似的问题,我通过在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_标记帮助程序
include Sprockets::Helpers::RailsHelper
include MyApp::AssetHelper
这允许我在需要的地方调用资产标记帮助程序。Rails.application.routes.url\u帮助程序应该用于生成routes.rb中定义的url,而不是图像url