Подтвердить что ты не робот

Rails: проблемы с Render Json

Когда я

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

а затем выполните мои тесты и проверьте

response.code

Я получаю 200, а не 400

Я уверен, что ответ на этот абсурд просто, но я искал час и не могу заставить его работать. Я мог просто разобрать Json, а затем проверить код состояния... но не существует способа получить response.code, чтобы вернуть статус? Я понимаю, что технически это было успешным, и я предполагаю, что почему response.code возвращает 200, но раньше я использовал Jbuilder, где я мог напрямую влиять на возвращаемый код.

4b9b3361

Ответ 1

Вы создали json там, который будет возвращен, и в этом json будет идентифицировать статус - 400. Однако это не говорит Rails для отправки статуса 400 в заголовок.

Вы можете сделать:

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

Или что-то вроде

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

Вы можете использовать либо символ: bad_request, либо номер статуса 400.