2016-09-18 94 views
0

我有一个Rails应用程序和一个表,我希望在每列的顶部应该执行搜索列和这些搜索应该一起工作的搜索字段。所以我正在寻找一种方法来实现它,并偶然发现Ransack gem,它看起来不错,它的所有选择和排序功能都很好,但我无法理解我是否可以使用它来解决我的问题。将多个字段值传递到搜索结果

从我看到,我可以传递参数给它这样 User.ransack(first_name_cont: 'Rya').result.to_sql

但我认为这是不够的,我的问题,我需要这样的东西 User.ransack(first_name_cont: 'Foo', last_name_eq: 'Bar', middle_name_in: [Moo, Boo]).result.to_sql

我可以做类似的文件这与Ransack?或者,我还能如何解决我的问题,或者我应该使用其他方法?

回答

0

Ransack负责在每个领域搜索自己。因此,您可以在搜索中指定表中存在的任何字段。

您可以将任何字段与谓词组合在一起。例如,你有场age

User.ransack(age_eq: 21) # => age = 21 
User.ransack(age_lt: 21) # => age < 21 
User.ransack(age_in: [21]) # => age in [21] 

结合了另一场“名”:

User.ransack(age_lt: 21, name_eq: 'Tim') # => age < 21 AND name = 'Tim' 
User.ransack(age_gteq: 21, name_eq: 'Tom') # => age >= 21 AND name = 'Tom' 

您可以通过使用相反的操作in谓语或not_in传递多个值。

等等,see basic predicates with description

+0

好的。我读了这篇文档,并被那个事实搞糊涂了,那里的所有例子只使用一个参数。所以这就是为什么我不知道是否有可能通过很多。我是Rails新手。所以可能这只是我缺乏Rails基金会知识 –

+1

@SeyboGlaux如果你认为缺乏知识,你可以阅读这篇文章http://blog.mediumequalsmessage.com/6-best-learning-ruby-books –

+0

,我可以问你将如何实现它?你会只是在列的顶部进行普通的搜索字段,或者你会使用Ransack'search_form_for'帮手吗?我试图在我的桌子'td's上用'f.search_field'在里面,并且不能使它像这样工作 –