23

我正在尝试将字符串值分配给我的 .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对我有用。

4

2 回答 2

39

You can use escape_javascript() to accomplish that:

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

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

The alias of this method is j:

 var data = {
     'name': "<%== j @product.name %>"
 }
于 2013-09-17T16:12:44.160 回答
-1
var data = {
   'name': '<%=j @product.name.html_safe %>',
   ...
};
于 2014-08-18T06:40:44.990 回答