将多个字段值传递给 ransack
Passing multiple fields values to ransack
我有一个带有 table 的 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 做这样的事情吗?或者我还能如何解决我的问题,或者我应该使用其他东西?
Ransack 负责自己搜索每个字段。因此,您在搜索中指定 table 中存在的任何字段。
您可以将任何字段与谓词结合起来。例如,您有字段 age
:
User.ransack(age_eq: 21) # => age = 21
User.ransack(age_lt: 21) # => age < 21
User.ransack(age_in: [21]) # => age in [21]
与另一个字段合并'name':
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
进行相反操作来传递多个值。
我有一个带有 table 的 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 做这样的事情吗?或者我还能如何解决我的问题,或者我应该使用其他东西?
Ransack 负责自己搜索每个字段。因此,您在搜索中指定 table 中存在的任何字段。
您可以将任何字段与谓词结合起来。例如,您有字段 age
:
User.ransack(age_eq: 21) # => age = 21
User.ransack(age_lt: 21) # => age < 21
User.ransack(age_in: [21]) # => age in [21]
与另一个字段合并'name':
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
进行相反操作来传递多个值。