【发布时间】:2012-12-26 09:30:26
【问题描述】:
如何包含 Rails 视图助手以便资产管道执行上下文可以访问?
一个示例用例是使用 form_tag 辅助方法为表单生成标记,并使其可用于 Javascript 模板(如把手、jst 等)。
我使用 handlebar_assets gem,但这也适用于任何 erb 或 haml 模板。
【问题讨论】:
标签: ruby-on-rails asset-pipeline actionviewhelper
如何包含 Rails 视图助手以便资产管道执行上下文可以访问?
一个示例用例是使用 form_tag 辅助方法为表单生成标记,并使其可用于 Javascript 模板(如把手、jst 等)。
我使用 handlebar_assets gem,但这也适用于任何 erb 或 haml 模板。
【问题讨论】:
标签: ruby-on-rails asset-pipeline actionviewhelper
创建一个初始化程序并将帮助程序包含在资产的上下文中,如下所示:
Rails.application.assets.context_class.class_eval do
include ActionView::Helpers
include MyAppHelper
include Rails.application.routes.url_helpers
end
【讨论】:
template = ERB.new(html) template.result(binding) 将自定义 ERB 渲染为字符串时,这也适用于我。没有这个,我就无法使用 concat 和其他简单的助手。
上面的答案现在已经过时了。从 sprockets-rails 3 开始,适当的接口是一个配置块,如下所示:
Rails.application.config.assets.configure do |env|
env.context_class.class_eval do
# include SomeHelper
end
end
此配置块仍应放置在初始化程序中。
参考:https://github.com/rails/sprockets-rails/issues/307#issuecomment-170707886
【讨论】: