请相信我会对此有所帮助。
我有一个包含4个表单的视图(通过迭代计划数组创建),每个表单中都有一个plan_id
个隐藏字段。我正在使用Stripe
自定义集成,并且我在Javascript回调上提交了特定表单,但是传递给我的rails控制器的plan_id
始终是页面中最后一个表单的plan_id
< / p>
<% @plans.each.with_index do | plan,index | %>
...
<%= form_tag('/billings/subscription_checkout',:id => "elm-#{index}",
method: :post) do %>
<input name="plan_id" type="hidden" value="<%= plan.code %>">
</input>
<a id="plan-<%= index %>" class="selectPlan" >Select Plan</a>
然后,我在JS回调中提交表单:
<script>
var handler = StripeCheckout.configure({
key: "<%= Rails.configuration.stripe[:publishable_key] %>",
image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
currency: 'usd',
token: function(token) {
stripeToken = token.id;
$("form#elm-<%= index%>").append($("<input type=\"hidden\"
name=\"stripeToken\" />").val(stripeToken));
$("form#elm-<%= index%>").submit();
...
在控制器操作中,params[plan_id]
的值始终设置为最后一个表单中plan_id
的值,而不是设置在提交的表单中的plan_id
如果我在回调之外提交表单,我会在隐藏字段中获得正确的值。
请问我最好能处理这个