2014-10-01 71 views
0

我有一個搜索表單,我在搜索後返回,以便能夠優化搜索。我只是添加了一個複選框到該表單。Rails簡單形式查詢字符串中的單個複選框兩次

在視圖:

<%= f.input :available_tomorrow, as: :boolean, label: false, 
    inline_label: t('public.search.form.available_tomorrow.label'), 
    input_html: { name: :available_tomorrow, value: params[:available_tomorrow], 
    id: :available_tomorrow } %> 

在模型:

attr_reader :available_tomorrow 

HTLM生產:

<div class="form-group boolean optional search_available_tomorrow"> 
    <input name="available_tomorrow" type="hidden" value="0"> 
    <label class="checkbox"> 
    <input class="boolean optional" id="available_tomorrow" name="available_tomorrow" type="checkbox" value="1"> 
    Available tomorrow 
    </label> 
</div> 

當我選中該複選框,所有搜索參數中的URL出現細querystring,但那一個:

&available_tomorrow=0&available_tomorrow=1 

看起來像這兩個字段的值屬性發送,並且都不會更改。如果取消選中該框,我只在查詢字符串中獲得& available_tomorrow = 0。第二部分僅在複選框被選中時才添加。

一切按預期工作(搜索確實會根據複選框狀態返回正確的結果,當搜索表單更新時複選框處於正確狀態)。但是,querystring與available_tomorrow參數都很醜,看起來像第一個永遠不會出現。想法?

回答

0

當您POST表單時,對於帶有複選框的表單,這是正常行爲:如果未選中複選框,則只會將帶有值爲0的隱藏字段與formdata一起發送。如果選中該複選框,則也會發送值爲1的輸入。

複選框的隱藏字段始終發送,這是因爲否則將不會發送複選框的值。

長話短說:不要在意您的搜索網址中的查詢字符串,沒有人會永遠看着他們。 :)