我創建了我大學課程列表的可搜索版本,但不確定如何使用複選框讓用戶在一週中的某一天過濾課程。例如,如果用戶只想看到星期一和星期三見面的課程,他們會檢查「M」框和「W」框。如何用複選框過濾數據? (導軌)
我基本上已經有了一切工作,但有一個下拉菜單(他們可以選擇一個星期幾),而不是用複選框。
courses http://img90.imageshack.us/img90/8626/courses.jpg
下面是它如何工作的:
每次用戶點擊「搜索」按鈕,創建一個新的搜索對象(其中有像CLASS_NAME,講師,日等屬性),並只顯示那些屬性與表單提交相匹配的課程。也就是說,如果用戶選擇「M」,我告訴那些課程,「金屬加工液」,「MW」,等等。這是我的看法代碼:
<td><%= f.select :day, [['Any', nil],['M', 'M'], ['T', 'T'], ['W', 'W'], ['Th', 'Th'], ['F', 'F']] %></td>
這裏是我的搜索模式的代碼部分:
def courses
@courses ||= find_courses
end
def find_courses
Course.find(:all, :conditions => conditions)
end
def day_conditions
["courses.day LIKE ?", "%#{day}%"] unless day.blank?
end
如何使用複選框而不是下拉菜單按日過濾?例如,我想讓用戶查看「M」和「W」,這將顯示具有「MW」和「MWF」的類別,但不顯示「MT」。
當前我的:day屬性是一個字符串。我是否需要將其更改爲數組?如果是這樣,我怎麼能添加一個數組到我的sqlite表? 「數組」似乎不是數據類型。
我知道我在這裏問一個更開放式的問題。請讓我知道,如果更多的信息會有所幫助。謝謝!
編輯:遵循克洛克納的建議,但仍然不知道如何設置我的表格,讓複選框形成一個數組。這是我的(壞)到目前爲止的代碼:
<td><%= fields_for @search do |form| %>
M: <%= form.check_box :day, {}, 'M', '' %>
T: <%= form.check_box :day, {}, 'T', '' %>
W: <%= form.check_box :day, {}, 'W', '' %>
Th: <%= form.check_box:day, {}, 'Th', '' %>
F: <%= form.check_box :day, {}, 'F', '' %>
<% end %>
我想它,這樣,如果用戶點擊M和W,天= [M,W]傳遞給我的搜索模式。此時此代碼顯然是錯誤的,因爲它只是從最後一行(F:...)中提取值。我一直在搜索答案,但仍然找不到任何東西。我應該在這裏使用fields_嗎?
謝謝,這是超級有幫助!我仍然無法弄清楚如何設置表單來啓用「天」數組。我將用更多信息編輯我的問題。 – jyli7