2014-02-20 2 views
21

Когда яRails: Рендер 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, где я мог напрямую влиять на возвращаемый код.

ответ

49

Вы создали там 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.

+0

тьфу. Спасибо. Должно быть, я набрал код: 400, когда я это видел раньше. – Morgan

+0

, и внутренний статус также не требуется; милая. – Morgan

+1

Отлично. Я не думал, что ключ/значение статуса в json - это то, что вы искали, но я включил его в пример на всякий случай. –

Смежные вопросы