2012-04-09 14 views
0

Ich versuche derzeit, mehrere JSON-Objekte in einem meiner Controller als solche zurückgeben.Schienen Rendern JSON mit <% = funktioniert nicht wie erwartet

@chromosomes = @organism.chromosomes.to_json 
    @file_data = current_user.files.to_json 
    respond_to do |format| 
    format.html 
    end 

jedoch am vorderen Ende, wenn ich tun:

<%= @chromosomes %> 

oder

<%= @file_data %> 

Ich habe kein JSON-Objekt erhalten, anstatt bekomme ich die Daten als String mit Dinge wie & Zitat, etc. Ich habe versucht, die Zeichenfolge wie

console.log($.parseJSON("<%= @chromosomes %>")); 
zu analysieren

aber es funktioniert immer noch nicht. Liegt das daran, dass die Anfrage, die zurückgeschickt wird, HTML ist?

Danke!

+0

Sie haben die Frage bearbeitet, aber die Antwort ist immer noch die gleiche, siehe unten ... – Snips

Antwort

2

Der Code sollte in etwa so aussehen,

respond_to do |format| 
    format.html index.html.erb 
    format.xml { render :xml => @organism.chromosomes) } 
    format.json { render :json => @organism.chromosomes) } 
end 
0

Sie müssen nur

render :json => @organism.chromosomes 

Durch sah dich bearbeiten, denke ich, was Sie wollen, ist unten:

console.log($.parseJSON("<%= raw @chromosomes %>")); 
+0

Danke, aber ich bekomme immer noch kein JSON-Objekt am Frontend, wenn ich es ausgäbe. Ich habe die Frage mit weiteren Details aktualisiert. Danke noch einmal! –

0

Das Problem lag in der Tatsache, dass Rails die JSON-Daten als eine Zeichenfolge codiert, die die Standardeinstellung ist. Um das Problem zu beheben, das ich verwendete

<%= @chromosomes.html_safe %> 

am Frontend. Weitere Informationen zu diesem Thema finden Sie hier:

Weird JSON Javascript problem in Rails

0

Dies sollte funktionieren, für Rails 2,

console.log($.parseJSON(<%= @chromosomes.dump %>)); 

für Rails 3,

console.log($.parseJSON(<%= @chromosomes.dump.html_safe %>)); 

String # Dump die Zeichen entkommt und macht parseJSON() arbeiten. Beachten Sie, dass keine Anführungszeichen benötigt werden.

Verwandte Themen