首页 > 解决方案 > 使用 Javascript 回调在 Rails 表单中设置隐藏字段的值

问题描述

请在这方面提供一些帮助。我有一个包含 4 个表单(通过迭代计划数组创建)的视图,plan_id每个表单中都有一个隐藏字段。我正在使用Stripe自定义集成,并且我在 Javascript 回调中提交了特定的表单,但是plan_id传递给我的 rails 控制器的总是plan_id页面中最后一个表单

<% @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提交的表单中的集合。

但是,如果我在回调之外提交表单,我会在隐藏字段中获得正确的值。

请问我怎样才能最好地处理这个

标签: javascripthtmlruby-on-rails

解决方案


推荐阅读