2012-11-27 9 views
17

Kiedy użytkownik POSTS JSON do/update/action w aplikacji Rails 3, jaki jest najlepszy sposób na odpowiedź?Jaki jest preferowany sposób zwracania pustej odpowiedzi JSON w Rails 3?

Chcę tylko wysłać pustą odpowiedź JSON z kodem 200, coś jak

head :no_content 

lub

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

(przykłady z How to return HTTP 204 in a Rails controller).

Zwykle robiłem to:

render :json => {} 

lub

render :json => 'ok' 

Czy jest korzystne lub bardziej Rails-y sposobem na to?

+0

nie powinieneś zwracać niczego z 204. – Evert

+2

Używam tylko: głowa: ok –

Odpowiedz

27

Aplikacja My Rails 3 używa kodu takiego jak ten do aktualizacji. Kod dla html i xml został wygenerowany automatycznie przez Railsy, ​​więc dodałem go w rendererze JSON przy użyciu tego samego formatu.

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 

Działa idealnie, co jest ostatecznie ważne.

+0

Jaka jest różnica między głową: no_content i głową: ok? – Donato

+1

@Donato a: no_content (204) Odpowiedź jest żądaniem, które zakończyło się sukcesem, ale nie zwróciło żadnej treści: ok (200) jest żądaniem, które zakończyło się sukcesem, ale zwraca również odpowiednie dane. –

Powiązane problemy