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.Rails Controller akzeptiert JSON nicht?
Die JSON durch die JSON.stringify Funktion der JSON.org Bibliothek erzeugt produziert:
{"firstname" : "Joe" , "lastname" : "Bloggs"}
jedoch die Steuerung der JSON erwartet in Form zu sein:
{ "Person" : {"firstname" : "Joe" , "lastname" : "Bloggs"} }
Ich bin mir bewusst, dass im normalen Ablauf der Ereignisse (für HTTP-Anforderungen) die Parameter für die Anforderung unter dem Klassennamen des Modells verschachtelt werden, das erstellt wird.
Die erstellen Aktion im Controller ist:
def create
@person = Person.new(params[:person])
respond_to do |format|
if @person.save
flash[:notice] = 'Person was successfully created.'
format.html { redirect_to(@person) }
format.xml { render :xml => @person, :status => :created, :location => @person }
format.json { render :json => @person, :status => :created, :location => @person }
else
format.html { render :action => "new" }
format.xml { render :xml => @person.errors, :status => :unprocessable_entity }
format.json { render :json => @person.errors, :status => :unprocessable_entity }
end
end
end
Was wäre die sauberste Art und Weise für die Steuerung sein, die JSON Anfragen als erzeugt zu verarbeiten? Oder alternativ, wie generieren Sie " JSON von Javascript-Objekten" korrekt für die Weitergabe an Ihre Controller?
TIA, Adam
Würde dies immer noch für Standard-HTML-Anfragen funktionieren oder sollte ich die JSON-Anfragen in eine separate Methode umgestalten? – apchester
Nein. Sie sollten Ihre JSON-Anforderungen wirklich neu schreiben, um die gleichen Parameter zu übergeben, die über HTML übergeben werden. –
Danke Zach, Ich dachte so viel, aber wollte über Best Practice sicher sein. Cheers, Adam – apchester