【发布时间】:2014-06-20 20:37:02
【问题描述】:
我在 ActiveAdmin 中有一个用于布尔值的简单过滤器。看起来是这样的
filter :invisible, as: :select
您可以选择“any”、“true”或“false”,它工作得很好。但是过滤器的默认值为“any”,而我需要将其设置为“true”。我该怎么做?谢谢。
【问题讨论】:
我在 ActiveAdmin 中有一个用于布尔值的简单过滤器。看起来是这样的
filter :invisible, as: :select
您可以选择“any”、“true”或“false”,它工作得很好。但是过滤器的默认值为“any”,而我需要将其设置为“true”。我该怎么做?谢谢。
【问题讨论】:
试试这样的:
filter : invisible, as: :select, collection: [["Yes", true], ["No", false]]
这对我来说很好。
显然您可以根据需要编辑"Yes" - "No" 字符串。
【讨论】:
我找到了答案。你必须使用before_filter 所以它很简单
controller do
before_filter invisible: :index do
params[:q] = {invisible_eq: true} if params[:commit].blank?
end
end
【讨论】:
before_filter only: :index do
另一种方法是复制您想要的默认搜索,例如 active = true,然后使用该链接。例如,而不是显示所有用户并在代码中更改默认值:
/people/users
改用这个:
/people/users?qx%5Bactive%5D%5Bop%5D=null&qx%5Bactive%5D%5Bvalues%5D=true
【讨论】: