如何处理Rails中gems发出的网络请求中的呈现json错误?

时间:2018-09-19 15:14:06

标签: ruby-on-rails

我正在使用Stripe处理订阅付款。我有一个<select id="s1"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> </select> <select id="s2"> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> </select> <button type="button" id="btn">filter</button>处理用户输入其信用卡信息的时间。 Stripe创建一个用户,并将订阅附加到该用户。 Stripe gem处理这些网络请求。但是,如果Stripe在创建用户或附加订阅的请求中的任何时候遇到错误,我想呈现一个json错误。有没有办法处理来自gems的网络请求中的错误?

payments_controller.rb

PaymentsController

1 个答案:

答案 0 :(得分:1)

是的,但是您将需要根据文档中此处抛出的错误类型手动进行处理

https://stripe.com/docs/api/ruby#error_handling

处理任何条带错误的内联方法是将调用包装在begin块中,并在救援部分返回render json:。

// render an error if there is an issue creating a customer
begin
  customer = Stripe::Customer.create({
    email: current_user.email,
    source: request.params[:id]
  })
rescue ::Stripe::StripeError => e
  render json: { 'error': 'some error'}
  return 
end

更一般地说,您可以将该逻辑包装在proc中,然后调用该逻辑,以便在返回时退出上下文。