2010-10-21 6 views
6

In Rails 2.3 Früher habe ich immerRails JSON Injektion

render :json => { :success => true, :data => @foobar} 

JSON-Daten zu meinem Frontend zu senden. In Rails 3 Ich bin mit

respond_to :json 
... 
respond_with @foobar 

Aber was mir fehlt: Ich brauche den ‚Erfolg‘ Wert innerhalb der JSON-Struktur. Was ist der richtige Weg, um solche Daten in Rails 3 in die JSON-Antwort zu injizieren?


Hm, versuchte auch, aber ich erhalte die folgende Störung als Ergebnis:

SyntaxError (app/controllers/properties_controller.rb:13: syntax error, unexpected tASSOC, expecting '}' 
respond_with { :success => true, :data => @property } 
         ^
/app/controllers/properties_controller.rb:13: Can't assign to true 
respond_with { :success => true, :data => @property } 
           ^
app/controllers/properties_controller.rb:13: syntax error, unexpected tASSOC, expecting tCOLON2 or '[' or '.' 
respond_with { :success => true, :data => @property } 

Antwort

1

Sie können das Objekt nicht wie Wert verwenden. Sie fügen nur einige Schlüssel/Wert innen mit Überschreibung serializable_hash Methode

Aber Sie können Ihre Hash in respond_with

respond_with { :success => true, :data => @foobar} 
+0

Hmhm, versuchte dies auch, aber ich bekomme den folgenden Fehler als Ergebnis: – ctp

4

erzeugen Wenn die Dinge nicht den Standard passen, müssen Sie den vorherigen individuellen Weg gehen zurück . respond_with akzeptiert einen Block.

respond_with @foobar do |format| 
    format.json { render :json => { :success => true, :data => @foobar} } 
end