如何在ActiveAdmin上过滤布尔列?

时间:2011-09-30 10:00:50

标签: ruby-on-rails-3 activeadmin

此问题与ActiveAdmin gem有关。我正在尝试过滤具有布尔类型但没有成功的列:filter :column_namefilter :column_name, :as => :boolean不起作用。

有什么想法吗?

谢谢!

3 个答案:

答案 0 :(得分:20)

filter :column_name, :as => :select会创建一个下拉列表,其值为“Any”,“True”,“False”

答案 1 :(得分:8)

从ActiveAdmin 0.6.2开始,使用filter :column_name, as: :select现在具有完成表扫描的可怕副作用。此外,它的选项现在是“任何”,“真实”,“虚假”。

例如,如果我有一个带有布尔列District的{​​{1}}模型,那么enabled会生成查询filter :enabled, as: :select以获取3个值。我的区域表非常大,所以这显然不是我想要的。

OTOH,虽然我现在可以使用SELECT DISTINCT "districts"."enabled" FROM "districts" ORDER BY enabled asc,但它使用了一个默认为不被选中的复选框,这也不是我想要的。

要恢复0.6.2之前的行为,我必须这样做:filter :column_name, as: :boolean。 ActiveAdmin为我输入“Any”值。

答案 2 :(得分:0)

同样,如果您需要使用复选框,请执行:

filter :column_name, as: :check_boxes

这将创建名称为YesNo的复选框,其值分别为truefalse

如果您想自定义名称,甚至可能是标签?然后做:

filter :column_name, label: "Custom Column Name", as: :check_boxes, collection: [["Paid", true], ["Not paid", false]]

虽然你可以使用复选框(它有效!),但我建议使用as::select,因为它会记住'页面刷新后选择的值(在UI上)。从activeadmin版本1.2.1起,复选框还没有此功能