2011-12-05 101 views
1

我對Rails相當陌生,並且無法獲取複選框的值。我花了幾個小時瀏覽線程和API文檔,但似乎無法獲得除零以外的任何價值。Rails複選框值始終爲零

複選框未綁定到任何模型的屬性,而是旨在成爲一個布爾值,將篩選出/中忽略的元素

這裏的複選框聲明:

<%= form_tag model_path, :method => 'get', :id => "data_search" do %> 
    <%= hidden_field_tag :direction, params[:direction] %> 
    <%= hidden_field_tag :sort, params[:sort] %> 
    <p> 
     <%= text_field_tag :search, params[:search] %> 
     <%= submit_tag "Search", :name => nil %> 
     <%= hidden_field_tag "include_ignored", 0 %> //tried the hidden field trick also, to 
                //no avail 
     <%= check_box_tag "include_ignored", 0 %> 
     Include ignored items 
    </p> 
<% end %> 

注我已經試過聲明的form_for外面的複選框的標籤,以及沒有效果

後來我在一個模型搜索使用此:

Model.where(:is_ignored => params[:include_ignored]) 

控制檯中的查詢輸出與調試程序相同, params [:include_ignored]爲空。

我可能會錯過什麼?提前致謝。

回答

2

好的,如果你是說當你點擊提交 然後複選框狀態不傳遞(總是0) 那麼這是因爲你最終在標籤上的agrugment。

應該

<%= check_box_tag "include_ignored" %> 

不要把0之後。

+0

這是它的一部分,但它似乎並沒有默認值開始。第一次加載頁面時,我的目標是該複選框的值應該是false,因此表格只應顯示未忽略的項目。我可以很容易地在控制器中處理這種情況,但如果我不能獲得新的值用於稍後覆蓋,這將不會對我有幫助... – BrMcMullin

+0

嗯,我不明白這裏。是的,check_box_tag將默認爲取消選中,因爲這是html在呈現頁面時顯示的內容。如果複選框被點擊或者沒有被選中,那麼你是否在稍後要從控制器控制的呼叫說? – huntsfromshadow

+0

我試圖使用複選框的值作爲布爾值,並使用它來確定當控制器收集記錄並呈現它們時是否顯示「忽略」記錄。未選中時,「忽略」記錄將被過濾掉。勾選後,「忽略」記錄將被包含在視圖中。 – BrMcMullin