Установите значение фильтра ActiveAdmin по умолчанию

#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