2

我想知道我是否正确理解了Ruby 中的begin/rescue构造。我阅读了 Ruby 文档,但我仍然不确定我是否清楚。我正在我正在构建的 Rails 站点中实施 Stripe 以进行付款。Stripe 建议使用begin/ rescue。根据 stripe.com 的文档,我的付款控制器中有以下代码:

begin
  charge = Stripe::Charge.create(
    :amount      => @amount,
    :card        => token,
    :description => 'Rails Stripe customer',
    :currency    => 'usd'
  )
rescue Stripe::CardError => e
  flash[:error] = e.message
  redirect_to charges_path
end

@payment = Payment.new(params[:payment])
if @payment.save
  flash[:notice] = "Payment taken for #{number_to_currency(@amount/100)}."
else
  flash[:notice] = "Payment record not created."
  redirect_to charges_path
end

如果条带化收费失败,我不希望以/@payment结尾之后开始的部分运行。在我看来,在条带充电失败时,救援代码将运行,导致 rails 重定向到并且以下代码将不会运行,这是我想要的行为。我是否正确理解这一点?beginrescuecharges_path@payment

4

1 回答 1

1

在之后添加一个return语句redirect_to,即

return redirect_to(charges_path)

或者

redirect_to(charges_path)
return
于 2013-08-11T17:05:35.200 回答