【发布时间】:2011-09-30 10:00:49
【问题描述】:
这个问题与ActiveAdmin gem 有关。我正在尝试过滤具有布尔类型但没有成功的列:filter :column_name 和 filter :column_name, :as => :boolean 不起作用。
有什么想法吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails-3 activeadmin
这个问题与ActiveAdmin gem 有关。我正在尝试过滤具有布尔类型但没有成功的列:filter :column_name 和 filter :column_name, :as => :boolean 不起作用。
有什么想法吗?
谢谢!
【问题讨论】:
标签: ruby-on-rails-3 activeadmin
filter :column_name, :as => :select 将创建一个下拉菜单,其中包含值“Any”、“True”、“False”
【讨论】:
从 ActiveAdmin 0.6.2 开始,使用 filter :column_name, as: :select 现在具有执行完整表扫描的可怕副作用。另外,它的选项现在是“Any”、“true”、“false”。
例如,如果我有一个带有布尔列enabled 的District 模型,那么filter :enabled, as: :select 会生成查询SELECT DISTINCT "districts"."enabled" FROM "districts" ORDER BY enabled asc 以获取这3 个值。我的区域表很大,所以这显然不是我想要的。
OTOH,虽然我现在可以使用 filter :column_name, as: :boolean,但它使用了一个默认不被选中的复选框,这又不是我想要的。
要恢复 0.6.2 之前的行为,我必须这样做:filter :enabled, as: :select, collection: [["Yes", true], ["No", false]]。 ActiveAdmin 为我放弃了“任何”值。
【讨论】:
同样,如果您需要使用复选框,请执行以下操作:
filter :column_name, as: :check_boxes
这将创建名称为Yes 和No 的复选框,其值分别为true 和false。
如果您想自定义名称,甚至是标签?然后做:
filter :column_name, label: "Custom Column Name", as: :check_boxes, collection: [["Paid", true], ["Not paid", false]]
虽然您可以使用复选框(它有效!),但我建议使用as::select,因为它会在页面刷新后“记住”所选值(在 UI 上)。自 activeadmin 版本 1.2.1 起,复选框尚无此功能
【讨论】: