【问题标题】:Conditional Hidden Field Tag - Rails条件隐藏字段标记 - Rails
【发布时间】:2016-11-06 16:42:49
【问题描述】:

现在我正在将一个 plan_id 硬编码到一个隐藏字段标签中。当用户选择我的应用提供的免费计划时,这非常有用。但是,当他们选择一个明显具有不同 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,而是他们应该拥有 5 的plan_id。我可以在提交按钮中设置 plan_id 1 的参数吗?

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

【问题讨论】:

    标签: javascript ruby-on-rails ruby params


    【解决方案1】:

    这有点老套,但您可以使用 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('')
        }
      });
    });
    

    【讨论】:

      猜你喜欢
      • 2018-06-27
      • 1970-01-01
      • 1970-01-01
      • 2014-03-03
      • 2013-04-15
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多