条件隐藏字段标记 - Rails

时间:2016-11-06 16:42:49

标签: javascript ruby-on-rails ruby params

现在我将一个plan_id硬编码到一个隐藏的字段标签中。当用户选择我的应用提供的免费计划时,这非常有用。但是,当他们选择一个明显具有不同身份证的付费计划时,这会让一切都变得混乱。如果plan_id是付费计划,我的表单使用JS来呈现付款部分,但如果是免费计划,则跳过付款部分。那么,如何根据用户选择付费计划或免费计划来动态设置参数。这是我的代码。

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

如果用户选择此项。创建对象,一切都很棒。但这只是一种选择。用户也可以选择此项。

       <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>

如果用户选择此按钮,JS会隐藏此页面并取消隐藏付款表单。当用户输入付款信息并提交表单时,一切正常,但现在他们的plan_id为1,而他们的plan_id应为5.我可以设置plan_id 1的参数提交按钮?

所以,所有这一切都在说。除非选择免费计划,否则我怎能不将params硬编码为一个计划ID?希望这很清楚,如果您需要查看更多代码或更多解释,请告诉我。

1 个答案:

答案 0 :(得分:0)

这有点hacky但你可以使用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('')
    }
  });
});