Подтвердить что ты не робот

ActiveAdmin - генерировать ссылку на индекс, с настройкой фильтра?

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

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

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

Спасибо!

4b9b3361

Ответ 1

Я разработал достаточно удовлетворительное решение, немного поиграв в 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

Ответ 2

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

link_to "Section", admin_sections_path(q: { site_id_eq: site.id})

Ответ 3

Как отметил jgshurts, трюк определяет, что параметр запроса q[site_id_eq].

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

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

URL-адрес URL-адреса urlHelper # показывает дополнительные примеры этого.

Ответ 4

#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)
Надеюсь, что это работает и с другой версией. Обновите этот ответ, если вы уверены, что он работает с другими версиями, которые вы знаете.