2010-06-25 82 views
0

我試圖創建一個過濾器上使用多個複選框對應於一個數據庫列/屬性篩選結果,但我不知道如何準確地去做。過濾結果與多值複選框

EX。
index顯示最近幾年的天氣列表,並且您想要通過它進行過濾
這些屬性將成爲Day類的一部分。

查看
<fieldset>
<legend>Sky</legend>
<%= check_box_tag('filter[sky][]', 'sunny') %>Sunny
<%= check_box_tag('filter[sky][]', 'partly sunny') %>Partly Sunny
<%= check_box_tag('filter[sky][]', 'overcast') %>Overcast
</fieldset>
<fieldset>
<legend>Humidity</legend>
<%= check_box_tag('filter[humidity][]', 'low') %>Low
<%= check_box_tag('filter[humidity][]', 'average') %>Average
<%= check_box_tag('filter[humidity][]', 'high') %>High
</fieldset>
`

我希望再能經歷對每個過濾器的選項和應用已選擇所有。因此,如果我想看到陽光充足的日子裏低溼度和平均溼度,我會檢查這些箱子,並得到幾天在低溼度或平均溼度下曬太陽的日子。 SQL智慧我們會談論一個IN子句。

我很新的軌道,所以我不知道是否有一些特殊的軌道功能,我應該用這個或沒有。我是否需要編寫一個函數來運行復選框並生成SQL語句?

任何幫助,非常感謝。我會編輯這篇文章,如果我需要澄清任何事情。

回答

0

取決於on Rails的你在的版本,但我建議你看看動態範圍:

http://ryandaigle.com/articles/2008/12/29/what-s-new-in-edge-rails-dynamic-scope-methods

如果命名範圍是完全新的給你,你應該閱讀文章鏈接從第二段中的頁面開始(緊接在第一段代碼片段之後)。

你的建議是非常複雜的,因爲你希望能夠在天空和溼度範圍內運動,然後將這些運動聯合起來​​,但是20分鐘的修補不會產生結果 - 我認爲如果你是Rails新手(如果我錯了,那麼說:-)),你會從自己的練習中受益。