【问题标题】:Passing multiple fields values to ransack将多个字段值传递给 ransack
【发布时间】:2016-09-18 15:03:47
【问题描述】:

我有一个带有表格的 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 做这样的事情吗?或者我还能如何解决我的问题,或者我应该使用其他东西?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 search ransack


    【解决方案1】:

    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

    【讨论】:

    • 好的。我阅读了这个文档,并对那里的所有示例只使用一个参数这一事实感到困惑。所以这就是为什么我不知道是否有可能通过很多。我是 Rails 的新手。所以可能只是我缺乏 Rails 基础知识
    • @SeyboGlaux 如果觉得知识不够,可以看这篇文章blog.mediumequalsmessage.com/6-best-learning-ruby-books
    • 请问您将如何实现它?您会在列顶部创建普通搜索字段,还是使用 Ransack search_form_for 助手?我试图在我的桌子上使用它tds,里面有f.search_field,但无法让它像这样工作
    • @SeyboGlaux 你能附上代码(问题)
    • @SeyboGlaux 你能发布search_form_for Ransack 助手的 sn-p 吗?实施?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2021-12-07
    • 1970-01-01
    • 2013-11-07
    相关资源
    最近更新 更多