现在我将一个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?希望这很清楚,如果您需要查看更多代码或更多解释,请告诉我。
答案 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('')
}
});
});