5

エラーに関する Stripe ドキュメントを確認しましたが、これらのエラーを適切に処理またはリダイレクトするのにまだ問題があります。基本的に、何が起こっても、edit( 経由で) アクションに戻りedit_profile_path、メッセージを表示する (成功したかどうかに関係なく) ことを望んでいます。

editアクションに POST するアクションのフォームがありupdateます。これは有効なクレジット カードで正常に機能しています (料金は Stripe ダッシュボードにあります)。Stripe.js を使用しています。

class ExtrasController < ApplicationController

  def edit
    @extras = current_user.extras
  end

  def update

    Stripe.api_key = "hidden"

    token = params[:stripeToken]

    begin
      charge = Stripe::Charge.create(
        :amount => 5000, # amount in cents
        :currency => "usd",
        :card => token,
        :description => current_user.email
      )
    rescue Stripe::CardError => e
      # redirect_to edit_extras_path, notice: e.message
      # What I'm trying to do, but obviously results in AbstractController::DoubleRenderError
    rescue => e
      # Something else happened, completely unrelated to Stripe
      # Display a generic error message
    end

    redirect_to edit_extras_path, notice: "Card charged successfully."
  end

end
4

1 に答える 1