#ruby-on-rails #activeadmin
#ruby-on-rails #activeadmin
Вопрос:
У меня есть простой фильтр в ActiveAdmin для логического значения. Это выглядит так
filter :invisible, as: :select
Вы можете выбрать «любой», «true» или «false», и это работает просто отлично. Но значение фильтра по умолчанию равно «any», в то время как мне нужно установить для него значение «true». Как я могу это сделать? Спасибо.
Ответ №1:
попробуйте что-нибудь подобное :
filter : invisible, as: :select, collection: [["Yes", true], ["No", false]]
Для меня это работает нормально.
Очевидно, что вы можете редактировать "Yes"
— "No"
string по своему усмотрению.
Ответ №2:
Я нашел ответ. Вы должны использовать before_filter
так, чтобы это было так просто, как
controller do
before_filter invisible: :index do
params[:q] = {invisible_eq: true} if params[:commit].blank?
end
end
Комментарии:
1. Как насчет чего-то вроде этого redirect_to action: :index, q: {invisible_eq: true}, commit: параметры «Filter» [:commit].blank? Таким образом, URL-адрес перенаправляет ваш фильтр
2. У вас опечатка, она должна быть
before_filter only: :index do
Ответ №3:
Другой способ — скопировать поиск по умолчанию, который вы хотите, например, active = true, и использовать эту ссылку. Например, вместо отображения всех пользователей и изменения значения по умолчанию в коде:
/people/users
Вместо этого используйте это:
/people/users?qx%5Bactive%5D%5Bop]=nullamp;qx%5Bactive%5D%5Bvalues]=true