12

如何包含 Rails 视图助手以通过资产管道执行上下文访问?

一个示例用例是使用form_tag辅助方法为表单生成标记,并使其可用于 Javascript 模板(如把手、jst 等)。

我使用 handlebar_assets gem,但这也应该适用于任何erb模板haml

4

2 回答 2

29

创建一个初始化程序并将助手包含在资产的上下文中,如下所示:

Rails.application.assets.context_class.class_eval do
  include ActionView::Helpers
  include MyAppHelper
  include Rails.application.routes.url_helpers
end

取自这个sprockets issue

于 2013-01-11T18:19:21.140 回答
15

上面的答案现在已经过时了。从 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

于 2016-01-11T23:09:16.443 回答