我使用的是Rails 3.1和链轮之类的东西。
我想使用ERB对js文件进行预处理,然后使用javascript_include_tag将其包含进来。它是从代码生成的,所以我用ERB对它进行了预处理,但是我不能从ActionView:: helpers ::JavaScriptHelper获得像escape_javascript这样的帮助器
假设我的文件名为dynamic.js.erb,它包含
obj = {
name: "test",
tag: "<%= escape_javascript( image_tag( "logo.png" ) )%>"
};
如何阻止它生成错误:
throw Error("NoMethodError: undefined method `escape_javascript' for #<#<Class:0x1067da940>:0x116b2be18>
(in /Users/me/site/app/assets/javascripts/dynamic.js.erb)")
当我访问本地服务器并请求/assets/dynamic.js
时
发布于 2011-07-27 12:34:14
您可以将rails JS助手包含到您自己的类中。
class Helper
include ActionView::Helpers::JavaScriptHelper
def self.escape_js( text )
@instance ||= self.new
return @instance.escape_javascript( text )
end
end
然后在您的ERB文件中使用它:
obj = {
name: "test",
tag: "<%= Helper.escape_js( image_tag( "logo.png" ) ) )%>"
};
发布于 2015-03-20 03:00:52
通过ActionController::Base.helpers
调用,如下所示:
// file.js.erb
var x = "<%= ActionController::Base.helpers.j image_tag('logo.png') %>";
请注意,j
是escape_javascript
的别名,因此如果愿意,您可以使用长名称。
发布于 2011-11-15 17:14:37
也可以将JavaScriptHelper
直接包含到链轮Context
类(运行模板的类)中:
<% environment.context_class.instance_eval { include ActionView::Helpers::JavaScriptHelper } %>
或者甚至在其他地方定义帮助器并将其包含在模板中(以便能够重用帮助器)
<% environment.context_class.instance_eval { include MyHelper } %>
https://stackoverflow.com/questions/6838550
复制相似问题