Ruby on rails 使用Ruby一次性收费正确处理条带错误和异常
我已经查看了,但是仍然无法正确处理/重定向这些错误。基本上,无论发生什么情况,我都希望他们返回到Ruby on rails 使用Ruby一次性收费正确处理条带错误和异常,ruby-on-rails,ruby,ruby-on-rails-3,error-handling,stripe-payments,Ruby On Rails,Ruby,Ruby On Rails 3,Error Handling,Stripe Payments,我已经查看了,但是仍然无法正确处理/重定向这些错误。基本上,无论发生什么情况,我都希望他们返回到edit操作(通过edit\u profile\u path)并向他们显示消息(无论是否成功) 我在编辑操作上有一个表单,它发布到更新操作。使用有效的信用卡,此功能正常工作(费用在仪表板中)。我正在使用Stripe.js class ExtrasController < ApplicationController def edit @extras = current_user.ex
edit
操作(通过edit\u profile\u path
)并向他们显示消息(无论是否成功)
我在编辑
操作上有一个表单,它发布到更新
操作。使用有效的信用卡,此功能正常工作(费用在仪表板中)。我正在使用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
类外部控制器5000,#金额单位为美分
:货币=>“美元”,
:card=>token,
:description=>current_user.email
)
救援条带::CardError=>e
#重定向到编辑附加路径,注意:e.message
#我试图做的,但显然会导致AbstractController::DoubleRenderError
救援=>e
#发生了另一件事,与Stripe完全无关
#显示一般错误消息
结束
重定向到编辑额外路径,注意:“卡已成功充值。”
结束
结束
虽然您现在可以将flash消息传递到重定向到
,但您仍然可以自己操作flash
因此,只需对更新代码做一点小改动,您就可以随心所欲:
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
)
# No exceptions were raised; Set our success message.
flash[:notice] = 'Card charged successfully.'
rescue Stripe::CardError => e
# CardError; display an error message.
flash[:notice] = 'That card is presently on fire!'
rescue => e
# Some other error; display an error message.
flash[:notice] = 'Some error occurred.'
end
redirect_to edit_extras_path
end
为了使消息的用途更加明确,您可能需要将错误状态中的
通知
替换为警报
或错误
闪烁类型;然后,您可以轻松地使用CSS对它们进行样式化,以一目了然地指示成功或失败。(例如,每一个都提供了显示各种类型警报的样式。)我对这种方式研究得太多了,哈哈。感谢您提供的简单解决方案。是的,我用警报
vs通知
闪烁来做到这一点。干杯忽略简单的事情总是很容易的!很高兴它起到了作用。我建议你在有机会的时候把这个逻辑转移到一个模型上。我在发布这篇文章后就这样做了。谢谢你的推荐。好家伙-我实际上把我的移动到了一个专用的服务对象,因为我觉得它不适合任何型号。