我安装了 gem“Stripe”gem。它正在按预期工作。但是,在以前的 Rails 应用程序中,我可以在提交后使用控制器操作中提交的卡参数,但现在不能了。
我有一个订单控制器,它运行自定义函数来提交付款意图(基本上是先支付该商品的费用),如果成功,则它会创建订单。订单创建的一部分包括将card_brand 和card_last4 添加到订单表中的这些字段。由于某种原因,我现在正在开发的这个应用程序无法做到这一点。就像我无权访问这些参数一样。
nil 的未定义方法 `[]':NilClass
我正在使用 Rails 7.2.0。
我尝试编辑 shop_stripe.js 部分:
function addCardField(form, token, field) {
let hiddenInput = document.createElement('input');
hiddenInput.setAttribute('brand', 'hidden');
hiddenInput.setAttribute('name', "[user][card_" + field + "]");
hiddenInput.setAttribute('value', token.card[field]);
form.appendChild(hiddenInput);
}
我通过删除 [user] 更改了这一行,只需删除括号,这样它就只是用户,将其更改为 order 而不是 user,并且只有“card_” + 字段),等等,但没有任何效果。
hiddenInput.setAttribute('name', "[user][card_" + field + "]");
这就是我在控制器中尝试做的事情:
@order.card_brand = params[:user][:card_brand]
@order.card_last4 = params[:user][:card_last4]
因为控制台中的参数和错误看起来像这样:
因为你发送参数像
hiddenInput.setAttribute('name', "[user][card_" + field + "]");
并且参数名称是
[user]
,而不是 user
在您的屏幕截图中,参数中有
[user]
,但应该是 user
可能要解决此问题,您需要设置
hiddenInput.setAttribute('name', "user[card_" + field + "]");