2016-10-31 3 views
0

Eines meiner HTML-Elemente, ich habe ein Datenattribut, das ich einen Hash speichern möchte. Ich benutze Hash des to_json Methode Json-Objekt zu erstellen:Parsing das Ergebnis von Rails to_json in JavaScript

<%= f.select :condition, options_for_select([]), {prompt: "Select"}, {class: "form-control", 'data-array' => { 'source' => ['tv', 'letter', 'radio'], 'status' => ['error', 'return']}.to_json} %> 

Insbesondere dieser Teil:

'data-array' => { 'source' => ['tv', 'letter', 'radio'], 'status' => ['error', 'return']}.to_json 

im Browser das Ergebnis to_json wie folgt aussieht:

" {&quot;lead_source&quot;:[&quot;letter&quot;,&quot;television&quot;,&quot;radio&quot;,&quot;internet&quot;],&quot;appointment_status&quot;:[&quot;error&quot;,&quot;do_not_mail&quot;,&quot;return&quot;]}" 

Aber die Codierung Verwenden Sie &quot anstelle der wörtlichen Zeichenfolge '. Als Ergebnis, wie in der Chrome-Konsole:

$(el).data('array') 
" {&quot;lead_source&quot;:[&quot;letter&quot;,&quot;television&quot;,&quot;radio&quot;,&quot;internet&quot;],&quot;appointment_status&quot;:[&quot;error&quot;,&quot;do_not_mail&quot;,&quot;return&quot;]}" 
JSON.parse($(el).data('array')); 
VM8467:1 Uncaught SyntaxError: Unexpected token & in JSON at position 3(… 

Ich brauche etwas, das ich analysieren kann. Ist to_json die falsche Methode?

+1

Ich brauche html_safe zu verwenden: Donato

Antwort

0

Es sieht so aus, als ob Ihr JSON entkommt.

Ich denke, Sie geben es in einem View-Skript aus? Wenn ja, versuchen Sie die j-Helfer mit - http://api.rubyonrails.org/classes/ActionView/Helpers/JavaScriptHelper.html#method-i-j

+0

Warum ist es mit speziellen Entity-Zeichen, die nicht analysierbar sind, entkommen? – Donato

+0

Ich meine zu sagen, warum es verwendet "statt" – Donato

+0

In der Tat habe ich nur Ihren Vorschlag versucht und alles, was es tat, war die spezielle Entität entkommen: \ & quot; – Donato