web-dev-qa-db-fra.com

Rails: problèmes d'état de rendu Json

Quand je

  render json: {
    error: "No such user; check the submitted email address",
    status: 400
  }

puis faire mes tests et vérifier

response.code

J'en ai 200 plutôt que 400

Je suis sûr que la réponse à cette absurdement simple, mais je cherche depuis une heure et ne semble pas pouvoir faire fonctionner cela. Je pourrais simplement analyser le Json puis vérifier le code d'état ... mais n'y a-t-il pas un moyen d'obtenir response.code pour retourner l'état? Je comprends que techniquement, cela a été un succès et je suppose que c'est pourquoi le code de réponse renvoie 200, mais j'utilisais Jbuilder avant où je pouvais avoir un impact direct sur le code renvoyé.

37
Morgan

Vous avez créé le json là, qui sera retourné, et dans ce json sera une identification du statut - 400. Cependant, cela ne dit pas Rails d'envoyer le statut 400 dans l'en-tête.

Vous pourriez faire:

render json: {
  error: "No such user; check the submitted email address",
  status: 400
}, status: 400

Ou quelque chose comme

payload = {
  error: "No such user; check the submitted email address",
  status: 400
}
render :json => payload, :status => :bad_request

Vous pouvez utiliser le symbole: bad_request ou le numéro d'état 400.

79
Richard Jordan