Der Rails-Controller akzeptiert kein JSON?

8

Ich versuche, ein ActiveRecord-Objekt über eine JSON-Anfrage zu erstellen. Der Controller kann jedoch die in den Parametern des neu erstellten Objekts übergebenen Variablen nicht setzen. Als ein Beispiel hat ein Personenobjekt zwei Felder: Vorname und Nachname.

Der von der JSON.stringify-Funktion der JSON.org-Bibliothek generierte JSON erzeugt:

%Vor%

Der Controller erwartet jedoch, dass der JSON das folgende Format hat:

%Vor%

Ich bin mir bewusst, dass im normalen Ablauf der Ereignisse (für HTTP-Anfragen) die Parameter für die Anforderung sind unter dem Klassennamen des Modells verschachtelt erschaffen werden.

Die Erstellungsaktion im Controller lautet:

%Vor%

Was wäre der beste Weg für den Controller, den JSON zu verarbeiten? Anfragen wie generiert? Oder alternativ, wie generiert man "richtig" JSON von Javascript-Objekten für die Weitergabe an Ihre Controller?

TIA, Adam

    
apchester 05.01.2009, 21:32
quelle

4 Antworten

4

Wenn Sie nur einen Hash aller Parameter der Person übergeben (anstatt eines geschachtelten Hashs mit "Person" als Schlüssel), sollten Sie einfach @person = Person.new(params) ausführen können.

    
Zach Langley 05.01.2009, 21:47
quelle
1

Wie bei ActiveRecord 3.0.7 können Sie einfach

hinzufügen %Vor%

zu Ihrem Modell (person.rb), um von root ({"Person": ") part loszuwerden.

    
Andrei Petrenko 23.06.2011 12:53
quelle
0
  

Alternativ würde Person.new(params.reject{|k,v| k != "firstname" || k != "lastname"}) in Ihrem Ruby machen.

     

...

     

Person.new({:firstname => params[:firstname], :lastname => params[:lastname]}) - das funktioniert tatsächlich

Hier ist eine zukunftssichere Lösung:

%Vor%     
Orion Edwards 05.01.2009 23:01
quelle
0

Eine Idee, um flache JSON-Eingaben wie {"Vorname": "Joe", "Nachname": "Bloggs"} zuzulassen, und die geschachtelte Art, die Sie mit einem HTML-Formular erhalten, wären:

%Vor%     
Rich Apodaca 26.07.2009 00:01
quelle

Tags und Links