【发布时间】:2013-10-21 13:46:13
【问题描述】:
我查看了Stripe documentation on errors,但在正确处理/重定向这些错误时仍然遇到一些问题。基本上无论发生什么,我都希望他们回到edit 操作(通过edit_profile_path)并向他们显示一条消息(无论成功与否)。
我有一个关于edit 操作的表单,该表单发布到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
【问题讨论】:
-
我建议您在有机会时将此逻辑转移到模型中。
-
自发布此消息以来我已经这样做了。不过还是谢谢你的推荐。
-
好人 - 我实际上将我的移动到一个专用的服务对象,因为我觉得它不适合任何模型。
标签: ruby-on-rails ruby ruby-on-rails-3 error-handling stripe-payments