2016-11-06 88 views
0

現在,我將一個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,他們應該有plan_id爲5.我可以在提交按鈕中設置plan_id 1的參數嗎?

所以,所有這一切都在說。除非選擇免費計劃,否則我怎樣才能將參數硬編碼爲一個計劃編號?希望這很清楚,讓我知道你是否需要看到更多的代碼或更多的解釋。

回答

0

這是有點哈克,但你可以使用jQuery基於該單選按鈕被選中

價值分配給隱藏字段分配一個ID,您hidden_​​field_tag

<%= hidden_field_tag :plan_id, '', id: 'plan_id_hidden'%> 

然後使用jQuery或只是簡單的javascript來設置它的值。 with 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('') 
    } 
    }); 
});