、私は次のテストがあります文字列開始レール4.2.7のコンソールで
[45] pry(main)> '#$'
=> "\#$"
[46] pry(main)> '#@'
=> "\#@"
[47] pry(main)> '#!'
=> "#!"
[48] pry(main)> '#ab'
=> "#ab"
レールが唯一の文字列の前に「\」を置くようですが@または$後に#があるとき。
問題は、このテストに私を導き、私はJSONの配列を持つデータ属性をレンダリングERBファイル持っていることです。
data-xx="<%= [{xx: '#$', yy: 'yy'}.to_json, {zz: 'zzz'}.to_json] %>"
を次にクロムコンソールで、それは
として、予期しない結果が得られます$("#entry_show_modal_template").data('xx')
"["{\"xx\":\"\#$\",\"yy\":\"yy\"}", "{\"zz\":\"zzz\"}"]"
xxの値を#から変更すると、それが真実であると、なぜそのような違いがある場合や他のいくつかの文字列が、結果は配列
$("#entry_show_modal_template").data('xx')
["{"xx":"#!","yy":"yy"}", "{"zz":"zzz"}"]
としてOKになります誰かが知っていますか? この問題に取り組む方法はありますか?
ルビーコンソールでは、aa = [{xx: '#$'、yy: 'yy'}、{zz: 'zzz'}]。to_json ===>クロムコンソールで JSON.parse(aa)を使用すると、期待される配列、文字列の補間を処理するためのRubyメソッド –
ありがとう@WishZoneが得られます。あなたが正しいです。配列にto_jsonを置くだけで問題は解決されます。 –
大変です!ちょうど答えを追加しました。 –