次のように、.erbファイルのJavaScriptオブジェクトに文字列値を割り当てようとしています。
var data = {
'name': '<%= @product.name %>',
...
};
問題は、name
の値がTom's small ears
の場合、
data.name
の出力はTom's small ears
になります。
特殊文字をエスケープする方法はありますか?
'name': '<%= raw @product.name %>'
を実行してみましたが、Uncaught SyntaxError: Unexpected identifier
がコンソールに出力されます。
実行中<%= escape_javascript @product.name %>
出力Tom\'s small ears
編集MrYoshiji's
回答の下の@Stefanのコメントが役に立ちました。
escape_javascript()
を使用してそれを実現できます。
var data = {
'name': "<%== escape_javascript @product.name %>",
#...
};
このメソッドのエイリアスはj
です。
var data = {
'name': "<%== j @product.name %>"
}
var data = {
'name': '<%=j @product.name.html_safe %>',
...
};