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

时间:2015-06-30 23:40:59

标签: activeadmin ransack

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

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

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

我知道在搜查时有一个cont_any链方法。这就是我想要在过滤器中实现的目标:

Model.search(attribute_cont_any: %w(invoice 2011))

1 个答案:

答案 0 :(得分:2)

目前没有解决方案,但也许这会对你有帮助。

您可以通过以下方式使用cont_any过滤器:

filter :attribute, filters: [:cont_any] # or [:start, :cont_any, ...]

但目前存在一些问题:

  1. 这会产生一个类似于?q[attribute_cont_any]=invoice+2011的网址,但需要?q[attribute_cont_any][]=invoice&q[attribute_cont_any][]=2011

    1. 也许你可以编写一个Javascript来操作表单,将一个输入分成两个。
    2. 或者你可以写一个before_action来分割参数 params[:attribute_cont_any] = params[:attribute_cont_any].split
  2. 如果您请求正确的网址?q[attribute_cont_any][]=invoice&q[attribute_cont_any][]=2011,它将返回正确的结果,但过滤器输入的值现为“[”invoice“,”2011“]

    可以通过在ActiveAdmin代码

  3. 中放置join来解决此问题