试图显示带有422错误的JSON Rails React

时间:2018-12-11 14:53:22

标签: ruby-on-rails reactjs

我有一个应用程序,其中Rails作为后端,React作为前端。我正在尝试在服务器端处理Stripe errors,并通过更新客户端的状态来呈现任何错误。

此处是我的控制器方法中的代码:

def create
  # here some code to handle payment...
   rescue Stripe::CardError => e
     render json: e.json_body[:error][:message], status: 422
  end

和处理响应的我的react函数:

  axios.post("/orders"})
  .then(res => {
      this.setState({
        hasOrdered: true,
        orderSuccess: true,
        loading: false
      });
  })
  .catch(err => {
    console.log(err);
    this.setState({
      loading: false,
      error: err
    });
  });

console.log(err)的输出很简单:Error: Request failed with status code 422,而我通过网络获得的响应是​​:

network tab outbut in the browser

我想要的是用“您的卡资金不足”更新状态。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

确定解决方案:我必须访问err.response.data

 .catch(err => {
    console.log(err.response.data);
    this.setState({
      loading: false,
      error: err.response.data
    });