2011-12-09 6 views
6

Quando restituiamo l'output JSON utilizzando render :json =>@profiles, l'output restituirà i risultati richiesti con un errore 406. Come può evitare l'errore "406 Non accettabile"?ROR restituisce JSON con errore 406 Non accettabile

+1

Puoi fornire il codice del controller che stai utilizzando? –

+0

Un'immagine vale 1000 parole, ma a qualche codice verrà data risposta alla tua domanda! –

risposta

11

Sono più che sicuro di avere this problem.

Spiegazioni:

Say il controller restituisce solo JSON risponde

def action 
    # call 
    respond_to do |format| 
    format.json { render json: results } 
    end 
end 

Questo restituirà il JSON più presto:

  • /path_to_action.json si chiama
  • /path_to_action viene chiamato con intestazioni Content-Type:application/json; e probabilmente alcuni altri tipi di intestazione (ad esempio X-Requested-With:XMLHttpRequest)

In caso contrario, restituisce un errore 406 Not Acceptable.

Per evitare il problema, se il controller restituisce solo JSON, scrivere:

def action 
    # call 
    render json: results 
end 

in caso contrario, utilizzare /path_to_action.json invece.

0

Questo è successo a me quando avevo before_action :authenticate_user! sull'azione del controller, ma lo chiamavo da una pagina non autenticata.

La pagina stessa stava tentando di emettere un reindirizzamento.

Autenticare l'utente o rimuovere before_action risolto per me.

Problemi correlati