ActiveAdmin - генерировать ссылку на индекс с предустановленным фильтром? - PullRequest
21 голосов
/ 03 апреля 2012

На странице ActiveAdmin я хотел бы включить ссылку на список связанных ресурсов.Например, учитывая, что на сайте есть разделы_many и раздел принадлежит_ сайту (в моих моделях ActiveRecord), я бы хотел, чтобы на моей странице показа сайта была включена ссылка на разделы на сайте, которая бы переходила на страницу индекса раздела сПредустановка фильтра сайта.

Обратите внимание, что я не хочу использовать функцию Active_min для принадлежащих_данных;Я не хочу вложенных ресурсов по ряду причин (глубина вложения> 2, а также из-за проблем с юзабилити).Мне нужно создать URL-адрес, аналогичный тому, который генерирует ActiveAdmin, если я сначала перейду на страницу индекса Sections, а затем отфильтрую по сайту.

Список параметров запроса, созданный функцией фильтрации ActiveAdmin, довольно сумасшедший;Есть ли вспомогательный метод, который я мог бы использовать для достижения этой цели?

Спасибо!

Ответы [ 4 ]

24 голосов
/ 20 сентября 2014

Я использую этот синтаксис:

link_to "Section", admin_sections_path(q: { site_id_eq: site.id })
19 голосов
/ 03 апреля 2012

Я нашел достаточно удовлетворительное решение, немного покопавшись в meta_search.Синтаксис немного неуклюжий, но он делает свое дело.

index do
  ...
  column "Sections" do |site|
  link_to "Sections (#{site.sections.count})", :controller => "sections", :action => "index", 'q[site_id_eq]' => "#{site.id}".html_safe
  end
end
3 голосов
/ 25 августа 2017

#auto_link(resource, content = display_name(resource)) ⇒ Object

Автоматически связывает объекты с их контроллерами ресурсов.Если ресурс не был зарегистрирован, возвращается строковое представление объекта.

Содержимое по умолчанию в ссылке возвращается из ActiveAdmin::ViewHelpers::DisplayHelper#display_name

Вы можете передать содержимое для отображения

например: auto_link(@post, "My Link")

ActiveAdmin.register Girl do
  index do
    selectable_column

    column :name do |girl|
      auto_link(girl, girl.name)
    end

    column :email
    column :created_at
    actions
  end

Полезная ссылка: http://www.rubydoc.info/github/gregbell/active_admin/ActiveAdmin/ViewHelpers/AutoLinkHelper

Примечание: Это проверено сActiveAdmin ( v1.1.0 и 2.0.0.alpha )
Надеюсь, это работает и с другой версией.Пожалуйста, обновите этот ответ, если вы уверены, что он работает с другими известными вам версиями.

3 голосов
/ 10 февраля 2014

Как указал jgshurts, уловка заключается в идентификации этого параметра запроса q[site_id_eq].

Однако, если вам не нравится неуклюжий синтаксис, вы также можете просто использовать помощник пути:

link_to "Sections (#{site.sections.count})", admin_sections_path('q[site_id_eq]' => site.id)

Документация UrlHelper # link_to показывает дополнительные примеры этого.

...