3

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

4

1 回答 1

3

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

您实际上可以if在 ActiveAdmin DSLindex方法中使用语句。此外,ActiveAdmin 将过滤器作为q[]GET 参数传递。例如,名为“用户名”的字符串字段将是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后缀,分别表示等于、小于和大于。

于 2012-11-14T17:33:21.713 回答