活动管理员过滤器不起作用

时间:2018-08-07 14:41:18

标签: ruby-on-rails activeadmin

我在ActiveAdmin资源的索引视图上正在使用过滤器。

这是缩写的来源:

ActiveAdmin.register PendingCollege do
  config.clear_action_items!

  controller do
    include Sendable
  end

  filter :name

  menu :parent => "College"

  actions :all, :except => [:destroy, :edit]

  scope :all do
    PendingCollege
  end

  scope :pending, default: true do
    PendingCollege.pending
  end

  scope :rejected do
    PendingCollege.rejected
  end

  scope :accepted do
    PendingCollege.accepted
  end

  index do
    column :id
    column "Name", :name
    column "IPEDS Number", :ipeds_number
    column "Local id", :local_id
  end
end

我看到的行为是过滤器按预期显示在右侧。当我选择“包含”并在框中输入字符串并单击过滤器按钮时,它将使用默认范围重新加载页面,但结果根本没有被过滤。

我验证了"q"=>{"name_contains"=>"Adrian"}在控制器的参数中,但是正在运行的sql没有利用该参数。

我基本上添加了一个过滤器(而不是每个属性的默认过滤器),因为我不需要在此界面中公开大量的可搜索属性。

我看过很多代码示例,但没有发现需要添加额外代码来支持过滤器的任何内容。

1 个答案:

答案 0 :(得分:0)

您应该定义如下范围:

scope :pending, default: true do |scope|
  # given scope has all applied filters at this moment
  scope.pending
end

在您的情况下,由于您的模型中具有相同名称的合并范围,因此您可以简单地这样做:

scope :all
scope :pending, default: true
scope :rejected
scope :accepted