activeadmin自定义筛选器,在同一属性上包含两个单词

activeadmin自定义筛选器,在同一属性上包含两个单词,activeadmin,ransack,Activeadmin,Ransack,我正在使用Rails 4.2和activeadmin 1.0.0.pre1以及postgresql 9.3 我的模型属性是一个字符串 现在,如果我筛选“发票2011”,它将给我包含“发票2011”的结果,这是您选择“包含”时的默认行为。在我的案例中,我希望结果包含“发票”或“2011” 我知道有一种cont\u anychain方法可以进行搜索。这就是我试图在过滤器中实现的目标: Model.search(属性\u cont\u any:%w(发票2011))目前没有解决方案,但这可能会对您有所

我正在使用Rails 4.2和activeadmin 1.0.0.pre1以及postgresql 9.3

我的模型属性是一个字符串

现在,如果我筛选“发票2011”,它将给我包含“发票2011”的结果,这是您选择“包含”时的默认行为。在我的案例中,我希望结果包含“发票”或“2011”

我知道有一种
cont\u any
chain方法可以进行搜索。这就是我试图在过滤器中实现的目标:


Model.search(属性\u cont\u any:%w(发票2011))
目前没有解决方案,但这可能会对您有所帮助

通过执行以下操作,您可以使用
cont_any
过滤器:

filter :attribute, filters: [:cont_any] # or [:start, :cont_any, ...]
但目前存在一些问题:

  • 这会生成一个url,比如:
    ?q[attribute\u cont\u any]=invoice+2011
    ,但它必须是
    ?q[attribute\u cont\u any][]=invoice&q[attribute\u cont\u any][]=2011

  • 也许您可以编写一个Javascript来操纵表单,将一个输入拆分为两个
  • 或者,您可以在执行操作之前编写一个分解参数的
    
    
    params[:attribute\u cont\u any]=params[:attribute\u cont\u any]。拆分
  • 如果您请求正确的URL
    ?q[attribute\u cont\u any][]=invoice&q[attribute\u cont\u any][]=2011
    ,它将返回正确的结果,但过滤器输入的值现在是“[“invoice”,“2011”]

    这可以通过在ActiveAdmin代码中放置一个
    join
    来解决