2012-05-09 4 views
6

В моей модели ActiveAdmin у меня есть настраиваемая область для отображения удаленных записей и нескольких фильтров для поиска записей по определенным столбцам.ActiveAdmin - использование областей с фильтрами

Использование фильтров индивидуально или совместно работает как ожидается.

Использование области действия работает как ожидалось.

Проблема заключается в том, что использование области видимо переопределяет все фильтры и после выбора области действия любой добавленный фильтр ничего не делает.

У кого-нибудь есть идеи? То, что я хочу, - это показать конкретную область действия, а затем по-прежнему иметь возможность фильтровать результаты в пределах этой области.

ActiveAdmin.register Example do 
     scope :deleted do |example| 
     Example.only_deleted 
     end 

     scope :all do |example| 
     Example.with_deleted 
     end 

     filter :title 
     filter :description 

     index do 
     column :title 
     column :description 
     end 

    end 

[обновление]

Вот решение, я пошел с. Я установил область with_deleted в модель и включил фильтр сбоку для отображения/скрытия удаленных результатов. Не идеально, так как первоначально удаленные результаты также показаны, но по крайней мере все фильтры могут использоваться вместе.

+0

Похожие, но не дублировать: http://stackoverflow.com/questions/12038138/how -to-filter-is-null-in-activeadmin –

+0

Это не проблема в текущем Active Admin больше – MikDiet

ответ

0

Вместо того, чтобы обладать созданием другого фильтра, который будет выбирать записи по критерию, основанные на том, удалены ли примеры или все. И применяйте столько фильтров, сколько хотите.

Или в фильтре при расчете селектора, на котором вы будете запускать фильтр, выполните область действия соответственно, а затем установите условия фильтра на этот селектор.

0

По умолчанию ActiveAdmin хочет, чтобы области применения отображали только символическое имя метода. Когда вы определяете области видимости таким образом, они могут быть привязаны к области, уже предоставленной фильтрами, и они работают вместе.

Таким образом, ваша ошибка явно вызывает Model#class_method вместо предоставления :symbolized_class_method_name (с подразумеваемым владельцем текущей модели).

Фильтры и области будут работать вместе, если вы замените этот код:

scope :all do |example| 
    Example.with_deleted 
end 

scope :deleted do |example| 
    Example.only_deleted 
end 

С этим:

scope "Deleted", :only_deleted 
scope "All", :with_deleted 
+1

Пять лет спустя, документы ActiveAdmin до сих пор не обращаются к этому. Я столкнулся с той же проблемой, прежде чем понял. – armchairdj

Смежные вопросы