2010-06-25 105 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新手(如果我错了,那么说:-)),你会从自己的练习中受益。