В Rails я возвращаюсь:
render json: { errors: e.response.body.errors }, status: 400
В JavaScript я использую Axios:
axios.patch('/settings/account', {}, {params: {...
} })
.then((e)=> {
...
console.log('submitted')
})
.catch(function (error, res) {
// only get error that gives 400, but not error msg here, res isn't here
console.log(error);
});
Как получить e.response.body.errors
в моем интерфейсе?
Axios отказываются от обещаний, если код состояния HTTP-ответа сервера - это ничего, кроме 2xx. Я вижу, что вы отправляете сообщение об ошибке с сервера, но отправляете ли вы этот ответ через статус ошибки HTTP? Если вы arent, ошибка не является ошибкой для axios, поэтому ошибка будет отображаться в "then()" hook, так как обещание будет разрешено.
Если да, то вы должны увидеть ошибку error.response.data
error.response.data
. Но возможно, что axios перехватывает другие ошибки, например, если у вашего сервера возникли проблемы с отправкой этого тела ошибок. Если это произойдет, вы должны увидеть ошибку whitinerror.message
илиerror.request
или простоconsole.log(error)
чтобы увидеть, что происходит.