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

ccl*_*lle 21 javascript ruby escaping ruby-on-rails special-characters

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

var data = {
    'name': '<%= @product.name %>',
    ...
};
Run Code Online (Sandbox Code Playgroud)

问题是,如果值nameTom'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回答中的评论对我有用.

MrY*_*iji 34

你可以用它escape_javascript()来完成:

var data = {
    'name': "<%== escape_javascript @product.name %>",
    #...
};
Run Code Online (Sandbox Code Playgroud)

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

这种方法的别名是j:

 var data = {
     'name': "<%== j @product.name %>"
 }
Run Code Online (Sandbox Code Playgroud)

  • Rails似乎逃脱了`'`,尝试`<%==`而不是`<%=` (6认同)