ActiveAdmin - генерировать ссылку на индекс, с настройкой фильтра?
На странице ActiveAdmin я хотел бы включить ссылку на список связанных ресурсов. Например, учитывая, что сайт имеет несколько разделов и раздел, принадлежащий сайту (в моих моделях ActiveRecord), я хотел бы, чтобы страница с сайтом показывала ссылку на разделы в пределах сайта, которая переходила бы на страницу индекса Секции, а Предварительный фильтр сайта.
Обратите внимание, что я не хочу использовать функцию ActiveAdmin принадлежит к функции; Я не хочу вложенных ресурсов по ряду причин (глубина вложенности > 2, а также проблемы удобства использования). Я хочу создать URL-адрес, похожий на тот, который создается ActiveAdmin, если я сначала перейду на страницу индексов разделов, а затем отфильтруйте по сайту.
Список параметров запроса, сгенерированный функцией фильтрации ActiveAdmin, довольно сумасшедший; есть ли вспомогательный метод, который я мог бы использовать для достижения этой цели?
Спасибо!
Ответы
Ответ 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)
Надеюсь, что это работает и с другой версией. Обновите этот ответ, если вы уверены, что он работает с другими версиями, которые вы знаете.