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
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.
Wie bei ActiveRecord 3.0.7 können Sie einfach
hinzufügen %Vor%zu Ihrem Modell (person.rb), um von root ({"Person": ") part loszuwerden.
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%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%Tags und Links javascript ruby-on-rails json