【发布时间】:2012-10-16 21:36:14
【问题描述】:
我正在使用 ActiveAdmin 和 Ruby on Rails 来开发 web 应用程序的管理部分。我正在为具有很多属性的模型构建索引页面。这些属性中的大多数我都启用了过滤器,但是我不能在索引表上全部显示它们,因为它变得太杂乱了。有没有办法根据使用的过滤器动态显示/隐藏表格上的列?有没有更好的方法来解决这个问题?
【问题讨论】:
我正在使用 ActiveAdmin 和 Ruby on Rails 来开发 web 应用程序的管理部分。我正在为具有很多属性的模型构建索引页面。这些属性中的大多数我都启用了过滤器,但是我不能在索引表上全部显示它们,因为它变得太杂乱了。有没有办法根据使用的过滤器动态显示/隐藏表格上的列?有没有更好的方法来解决这个问题?
【问题讨论】:
我已经找到了这个问题的一些答案,但它并不漂亮,而且绝对不是很干燥。
您实际上可以在 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 后缀分别表示等于、小于和大于。
【讨论】: