我不确定如何描述这个问题,所以会尽量清楚。
我们的 Rails 应用程序中有一个页面,我们的客户可以在其中更新他们的信用卡详细信息。表单发布到外部服务以验证详细信息。然后透明地重定向回我们。
最初,我将表单放在它自己的控制器中进行测试(完美运行),但我只是将它移到了我的 users_controller 中。
表单发布并重定向到执行一些检查的确认操作。当我从用户控制器中发布时,我收到一个错误:
Couldn't find User with id=k2hx5p36w3g9rxsz
这实际上是交易的 id。不是用户。
网址如下所示:
http://localhost:8080/settings/confirm?http_status=200&id=k2hx5p36w3g9rxsz&kind=update_payment_method&hash=9c85b12c1242cd58de27b2582c934e34a0e9455e6
在我的控制器中,我有这个:
def billing
@user = current_user
@credit_card = current_user.default_credit_card
@tr_data = CreditCard::TransparentRedirect.update_credit_card_data(:redirect_url => confirm_credit_card_info_url, :payment_method_token => @credit_card.token)
...
end
def credit_card_confirm
@user = current_user
@result = CreditCard::TransparentRedirect.confirm(request.query_string)
if @result.success?
redirect_to user_billing_path, :notice => "Credit card updated"
else
render :action => "billing"
end
end
在我的路线中:
match '/settings/confirm' => 'users#credit_card_confirm', :as => :confirm_credit_card_info
我该怎么做才能避免将 ID 作为用户 ID?