此问题与ActiveAdmin gem有关。我正在尝试过滤具有布尔类型但没有成功的列:filter :column_name
和filter :column_name, :as => :boolean
不起作用。
有什么想法吗?
谢谢!
答案 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
这将创建名称为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起,复选框还没有此功能