我已經看了Stripe documentation on errors,但我仍然有一些問題處理/重定向這些錯誤正確。基本上不管發生什麼事情,我希望他們回到edit
行動(通過edit_profile_path
)並向他們顯示消息(無論是否成功)。正確處理Stripe錯誤和異常與紅寶石的一次性收費
我對edit
操作發佈了update
操作的表單。這可以使用有效的信用卡正常運行(收費在條形儀表板中)。我正在使用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
我建議您在獲得機會時將此邏輯移至模型。 – tommyd456
自發布以來,我已經這樣做了。謝謝你的建議。 – gbdev
好人 - 我實際上把我的感動轉移到了一個專門的服務對象上,因爲我覺得它不適合任何模型。 – tommyd456