13

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

任何的想法?

谢谢!

4

3 回答 3

21

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

于 2011-09-30T10:38:24.973 回答
11

从 ActiveAdmin 0.6.2 开始,使用filter :column_name, as: :selectnow 具有执行完整表扫描的可怕副作用。另外,它的选项现在是“Any”、“true”、“false”。

例如,如果我有一个District带有布尔列的模型,enabledfilter :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 对我来说是“任何”值。

于 2013-12-09T22:06:59.700 回答
0

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

filter :column_name, as: :check_boxes

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

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

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

虽然您可以使用复选框(它有效!),但我建议as::select在页面刷新后使用它“记住”所选值(在 UI 上)。自 activeadmin 版本 1.2.1 起,复选框尚无此功能

于 2018-04-11T12:00:25.353 回答