2012-11-27 6 views
17

Wenn ein Benutzer JSON an die/update/action in einer Rails 3-App sendet, was ist die beste Antwort?Was ist der bevorzugte Weg, um eine leere JSON-Antwort in Rails 3 zurückzugeben?

Ich möchte nur eine leere JSON-Antwort mit einem 200-Code senden, so etwas wie

head :no_content 

oder

render :nothing => true, :status => 204 

(Beispiele aus How to return HTTP 204 in a Rails controller).

Typischerweise Ich habe dies getan:

render :json => {} 

oder

render :json => 'ok' 

Gibt es bevorzugt oder mehr Rails-y Weg dazu?

+0

sollten Sie nichts mit einem 204 zurückgeben. – Evert

+2

Ich benutze einfach: head: ok –

Antwort

27

Meine Rails 3 App verwendet Code wie diesen für Updates. Der Code für html und xml wurde automatisch von Rails generiert, daher habe ich den JSON-Renderer im selben Format hinzugefügt.

respond_to do |format| 
    if @product.update_attributes(params[:product]) 
    format.html { redirect_to(@product, :notice => 'Product was successfully updated.') } 
    format.xml { head :ok } 
    format.json { head :ok } 
    else 
    format.html { render :action => "edit" } 
    format.xml { render :xml => @product.errors, :status => :unprocessable_entity } 
    format.json { render :json => @product.errors, :status => :unprocessable_entity } 
    end 
end 

Funktioniert perfekt, was ist letztlich wichtig.

+0

Was ist der Unterschied zwischen head: no_content und head: ok? – Donato

+1

@Donato a: no_content (204) Antwort ist eine Anfrage, die Erfolg hatte, aber keinen Inhalt zurückgab,: ok (200) ist eine Anfrage, die erfolgreich war, aber auch die entsprechenden Daten zurückgibt. –

Verwandte Themen