2

我正在尝试将 Braintree 集成到我的 rails 应用程序中,该应用程序已经具有存款控制器、模型和视图。现在基本上您可以指定一个金额,但我将其状态设置为“待定”。我希望用户可以进行这样的存款,然后随时使用 Braintree(ala 购物车)付款。我是否必须创建另一个控制器和/或模型来执行此操作?(例如,我见过的所有 Braintree 示例都希望立即付款)。

具体来说,我一直在尝试使用我已经拥有的“存款”。我将用户姓名、信用卡信息等表格放在存款“显示”页面和确认按钮上。如果所有字段都满足验证,这似乎可以正常工作,但是当出现错误并再次呈现显示页面时它不会。在 DepositsController.rb 中:

 def confirm
  @deposit = Deposit.find(params[:id])
  @result = Braintree::TransparentRedirect.confirm(request.query_string)
  if @result.success?
    render :action => "confirm"
  else
    render :action => "show"
   end
 end

问题是:id现在是 Braintree 交易 ID,而不是存款 id(主键)。所以当然Deposit.find(params[:id])找不到。实现这一点的最佳方法是什么?我应该以某种方式存储以前的 id 还是以另一种方式获取它?我应该使用另一个控制器吗?谢谢!

4

1 回答 1

1

简短的回答是您应该使用 Cart 模型,从我可以在这里收集的内容中连接到此存款模型。然而,基于其他问题,这种感觉可能会改变。

因此,仅基于您上面写的内容:

如果我们遵循 RESTful 方法,您应该Deposit#new为所有新存款创建一个。

然后,在您的Deposit#create中,您会将所有逻辑放入deposit.rb模型文件中。这个逻辑包括去Braintree等等。

你说你正在处理你已经拥有的存款,在这种情况下,它们应该在Deposit#edit方法中处理。

在这方面我会问你更多问题,你在使用 ActiveMerchant 吗?如果不是,为什么不呢?

于 2010-12-26T15:04:34.697 回答