2

beginRuby の/rescueコンストラクトを正しく理解しているかどうかを知りたいです。Ruby のドキュメントを読みましたが、明確かどうかまだわかりません。構築中のRailsサイトで支払い用にStripeを実装しています。Stripe はbegin/の使用を推奨してrescueいます。strip.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の終わりの後に続くセクションで始まるセクションを実行したくありません。ストライプチャージが失敗すると、レスキューコードが実行され、レールがにリダイレクトされ、次のコードが実行されないように見えます。これは私が望む動作です。私はこれを正しく理解していますか?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 に答える