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

17

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

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

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

Спасибо!

    
задан jgshurts 03.04.2012 в 00:18
источник

4 ответа

20

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

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

link_to "Section", admin_sections_path(q: { site_id_eq: site.id})
    
ответ дан Dorian 19.09.2014 в 22:17
источник
3

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

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

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

В документе UrlHelper # link_to приведены дополнительные примеры этого.     

ответ дан Sam Blake 09.02.2014 в 21:35
источник
1
  

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

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

     

Содержимое по умолчанию в ссылке возвращается из   % Co_de%      

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

     

например: ActiveAdmin::ViewHelpers::DisplayHelper#display_name

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

Полезная ссылка: Ссылка

  

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

    
ответ дан illusionist 25.08.2017 в 06:21
источник