2012-11-27 14 views
17

Quando un utente esegue il POST JSON in/update/action in un'app Rails 3, qual è il modo migliore per rispondere?Qual è il modo preferito per restituire una risposta JSON vuota in Rails 3?

voglio inviare solo una risposta JSON vuota con un codice 200, qualcosa come

head :no_content 

o

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

(esempi da How to return HTTP 204 in a Rails controller).

In genere ho fatto questo:

render :json => {} 

o

render :json => 'ok' 

È ci preferito o più Rails-y modo per questo?

+0

non si dovrebbe restituire nulla con un 204. – Evert

+2

Io uso solo: testa: ok –

risposta

27

L'app My Rails 3 utilizza un codice come questo per gli aggiornamenti. Il codice per html e xml è stato generato automaticamente da Rails, quindi ho aggiunto solo nel renderer JSON utilizzando lo stesso formato.

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 

Funziona perfettamente, che è ciò che alla fine è importante.

+0

Qual è la differenza tra la testa: no_content e la testa: ok? – Donato

+1

@Donato a: no_content (204) la risposta è una richiesta che ha avuto successo ma non ha restituito alcun contenuto,: ok (200) è una richiesta che ha avuto successo ma che restituisce anche i dati appropriati. –

Problemi correlati