如何在ActiveAdmin索引页面上将活动过滤器显示为列?

时间:2012-10-16 21:36:15

标签: ruby-on-rails activeadmin

我在Ruby on Rails上使用ActiveAdmin来开发webapp的管理部分。我正在为具有大量属性的模型构建索引页面。我启用过滤器的大多数属性,但我无法在索引表上显示它们,因为它变得太杂乱了。有没有办法根据使用的过滤器动态显示/隐藏表中的列?有没有更好的方法解决这个问题?

1 个答案:

答案 0 :(得分:3)

我已经找到了这个问题的一些答案,但它并不漂亮,绝对不是很干。

您实际上可以在ActiveAdmin DSL if方法中使用index语句。此外,ActiveAdmin将过滤器作为q[] GET参数传递。例如,名为“username”的字符串字段将是q[username_contains] GET参数。名为“number_of_posts”的数字字段可以是q[number_of_posts_eq]。使用这个我们可以查看一个示例,其中我们显示过滤后的帖子数量,或者用户的电子邮件地址,如果他们没有:

ActiveAdmin.register User do
    index do
        column :username
        column :first_name
        column :last_name
        if(params[:'q[number_of_posts_eq]'])
            column :number_of_posts
        else
            column :email
        end
    end

    filter :number_of_posts
end

当然,有许多不同的过滤器类型,因此查询参数将根据类型而有所不同。即使是数字类型也有_eq_lt_gt后缀,分别为equals,less-than和greater-than。