Escape String - 在Javascript中输出rails字符串

时间:2013-09-17 16:11:02

标签: javascript ruby-on-rails ruby escaping special-characters

我正在尝试将字符串值分配给我的.erb文件中的javascript对象,如下所示:

var data = {
    'name': '<%= @product.name %>',
    ...
};

问题是,如果name的值为Tom's small ears

data.name的输出为Tom&#x27;s small ears

有没有办法逃避特殊字符?

我尝试'name': '<%= raw @product.name %>',但Uncaught SyntaxError: Unexpected identifier输出到控制台。

执行<%= escape_javascript @product.name %>输出Tom\&#x27;s small ears

修改 @ Stefan在MrYoshiji's回答下的评论对我有用。

2 个答案:

答案 0 :(得分:32)

您可以使用escape_javascript()来完成此任务:

var data = {
    'name': "<%== escape_javascript @product.name %>",
    #...
};

链接: http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-escape_javascript

此方法的别名为j

 var data = {
     'name': "<%== j @product.name %>"
 }

答案 1 :(得分:0)

var data = {
   'name': '<%=j @product.name.html_safe %>',
   ...
};