无法从 Stripe gem 提交访问 Rails 控制器操作中的参数

问题描述 投票:0回答:1

我安装了 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]

因为控制台中的参数和错误看起来像这样:

enter image description here

ruby-on-rails ruby model-view-controller stripe-payments
1个回答
0
投票

因为你发送参数像

hiddenInput.setAttribute('name', "[user][card_" + field + "]");

并且参数名称是

[user]
,而不是
user

在您的屏幕截图中,参数中有

[user]
,但应该是
user

可能要解决此问题,您需要设置

hiddenInput.setAttribute('name', "user[card_" + field + "]");
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.