条件隐藏字段标记 - Rails

Conditional Hidden Field Tag - Rails

现在我正在将 plan_id 硬编码到隐藏字段标记中。当用户 select 使用我的应用程序提供的免费计划时,这非常有效。但是,当他们 select 一个显然有不同 ID 的付费计划时,这会把一切都搞砸。如果 plan_id 是付费计划,我的表单使用 JS 呈现部分付款,但如果它是免费计划,则跳过部分付款。那么,我如何根据用户 select 付费计划或免费计划动态设置参数。这是我的代码。

      <label>
        <%= hidden_field_tag :plan_id, 1 %>
        <%= f.submit "Select", class: "button-big reverse-blue" %>
      </label>

如果用户select是这个。对象已创建,一切都很好。但这只是一种选择。用户也可以select这个。

       <label>
          <input type="radio" name="plan_id" id="plan_id_5" value="5" data-plan-form-next data-plan-name="Surveillance Van" data-plan-price="79" />
          <span class="button-big reverse-blue">Select</span>
        </label>

如果用户select点击此按钮,JS 会隐藏此页面并取消隐藏付款表单。当用户输入付款信息并提交表单时,一切正常,除了现在他们的 plan_id 为 1,而不是他们应该有 plan_id 为 5。我可以设置 [=23 的参数吗? =] 1 在提交按钮?

综上所述。除非选择免费计划,否则我怎么能不将参数硬编码为一个计划 ID?希望这足够清楚,如果您需要查看更多代码或更多解释,请告诉我。

这有点老套,但您可以使用 jQuery 根据选择的单选按钮为隐藏字段分配值

为您的 hidden_field_tag

分配一个 ID
<%= hidden_field_tag :plan_id, '', id: 'plan_id_hidden'%>

然后使用 jQuery 或直接使用 javascript 来设置它的值。 jQuery

$(document).ready(function(){
  $( "[type=radio]" ).change(function() {
    if ($("#plan_id_1").is(':checked')) {
      $('#plan_id_hidden').val('1')
    } else if ($("#plan_id_2").is(':checked')) {
      $('#plan_id_hidden').val('2')
    } else {
      $('#plan_id_hidden').val('')
    }
  });
});