这个问题与ActiveAdmin gem 有关。我正在尝试过滤具有布尔类型但没有成功的列:filter :column_name
并且filter :column_name, :as => :boolean
不起作用。
任何的想法?
谢谢!
这个问题与ActiveAdmin gem 有关。我正在尝试过滤具有布尔类型但没有成功的列:filter :column_name
并且filter :column_name, :as => :boolean
不起作用。
任何的想法?
谢谢!
filter :column_name, :as => :select
将创建一个下拉列表,其值为“Any”、“True”、“False”
从 ActiveAdmin 0.6.2 开始,使用filter :column_name, as: :select
now 具有执行完整表扫描的可怕副作用。另外,它的选项现在是“Any”、“true”、“false”。
例如,如果我有一个District
带有布尔列的模型,enabled
则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 起,复选框尚无此功能