2012-12-21 65 views
0

我正在使用searchlogic在我的結果集上執行搜索。帶複選框的searchlogic

下面是我的搜索框,其中包含複選框。

<% form_for @search do |f| %> 
    <div class="searchbox" style="text-align: left; width: 100%"> 

    <span> Status: </span> 

    Incomplete - <%= f.check_box :sub_status_fk_equals_any, {:name => "search[sub_status_fk_equals_any][]"}, "51" %> 
    Complete - <%= f.check_box :sub_status_fk_equals_any, {:name => "search[sub_status_fk_equals_any][]"}, "52" %> 
    Under Review - <%= f.check_box :sub_status_fk_equals_any, {:name => "search[sub_status_fk_equals_any][]"}, "53" %> 
    Approved - <%= f.check_box :sub_status_fk_equals_any, {:name => "search[sub_status_fk_equals_any][]"}, "54" %> 

    <%= f.submit "Submit"%> 
    </div> 
<% end %> 

上面的代碼,只要能正常工作的複選框被選中,但如果所有的複選框是空的,而不是返回所有行,什麼都不會返回。

在我的地址欄,將顯示下列參數:

http://localhost/sub_test/? 
search[order]=descend_by_sub_entry_date& 
search[sub_status_fk_equals_any][]=0& 
search[sub_status_fk_equals_any][]=0& 
search[sub_status_fk_equals_any][]=0& 
search[sub_status_fk_equals_any][]=0& 
commit.x=15&commit.y=18&commit=Search 

如果選擇沒有複選框它穿過0。

如果沒有選擇任何內容,我該如何返回所有行?

回答

0

好的,找到了解決方案。你需要通過「零」爲unchecked_value

Incomplete - <%= f.check_box :sub_status_fk_equals_any, {:name => 
     "search[sub_status_fk_equals_any][]"}, "51", nil %> 

     Complete - <%= f.check_box :sub_status_fk_equals_any, {:name => "search[sub_status_fk_equals_any][]"}, "52", nil %> 

     Under Review - <%= f.check_box :sub_status_fk_equals_any, {:name => "search[sub_status_fk_equals_any][]"}, "53", nil %> 

     Approved - <%= f.check_box :sub_status_fk_equals_any, {:name => "search[sub_status_fk_equals_any][]"}, "54", nil %> 

希望這可以幫助別人