2016-09-18 93 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'在裏面,並且不能使它像這樣工作 –