【问题标题】:How to show active filters as columns on ActiveAdmin index pages?如何在 ActiveAdmin 索引页面上将活动过滤器显示为列?
【发布时间】:2012-10-16 21:36:14
【问题描述】:

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

【问题讨论】:

    标签: ruby-on-rails activeadmin


    【解决方案1】:

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

    您实际上可以在 ActiveAdmin DSL index 方法中使用 if 语句。此外,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 后缀分别表示等于、小于和大于。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多