2016-08-06 1 views
1

コントローラで設定されたインスタンス変数 "@packages"をループしています。要素を "data-"を使用して指定します。インスタンス内のオブジェクトを "view"内のJSオブジェクトに変換し、中間のデータ属性を切り捨てます。

<% @packages.each do |package| %> 
    <% json_package=package.to_json %> 
    <a href="#" data-single-package=<%= json_package %>></a> 
<% end %> 

をしかし、アンカータグを検査する上で、私はJSONオブジェクトは、間にスペースで値を持っていた財産の一つで遮断された次のようにJSONにRubyオブジェクトを変更するために、私は「.to_json」を使用していますそれ。

enter image description here

あなたは、「タイトル」プロパティが値を持っている「annarpurna回路」を見ることができるように、しかし「.to_jsonは、」「を追加した空間に遮断される。

どのように私は、この文字列全体を作ることができます通過??

+0

ここで問題に関連していることがいかに@maxpleaner? – phoet

+0

いいえ、私はそうは思わない。 – phoet

答えて

1

それが引用したHTML属性を壊さないように、あなたがHTMLに入れた値をエスケープする必要があります。

あなたはレールがあなたのために引用し処理したい場合は、することができますを使用してくださいlink_toのようなタグヘルパーに渡すことができる属性。

すなわち:

<%= link_to "", "#", data: {"single-package" => package} %> 
+0

これに 'gsub'を使う方法の例を挙げることができますか? –

+0

@maxpleaner 'gsub'はどうしたらいいですか? – phoet

0

.to_jsonは、文字列にオブジェクトを変換し、文字列として原因NBSPに空白文字をsubstitureするのに役立つんスペースGSUBをエスケープしないように遮断されて適用した結果。ここで

は、それが私のためにそれを解決した方法です:

<% json_package.to_json.gsub(/\s/,"&nbsp;") %> 
関連する問題