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

19

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

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

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

Спасибо!

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

4 ответа

21

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

link_to "Section", admin_sections_path(q: { site_id_eq: site.id })
    
ответ дан Dorian 19.09.2014 в 22:17
  • Гораздо лучшее решение, чем ответ jgshurts –  pragma 16.02.2015 в 09:08
  • Это лучшее решение. –  ahmacleod 28.09.2015 в 22:24
  • @jgshurts приходят, и знаете, что это правильно;) –  JP Silvashy 30.04.2018 в 04:13
19

Я нашел достаточно удовлетворительное решение, немного покопавшись в 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
  • Спасибо, работает как шарм! –  rogerkk 03.06.2012 в 15:25
  • В качестве дополнительной заметки это также может работать с отношениями HABTM. Секция «q [site_id_eq]» должна быть плюрализована, так что примерно так: «q [sites_id_eq]» –  ScottJShea 12.07.2013 в 23:09
3

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

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

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
3

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

Automatically links objects to their resource controllers. If the resource has not been registered, a string representation of the object is returned.

The default content in the link is returned from ActiveAdmin::ViewHelpers::DisplayHelper#display_name

You can pass in the content to display

eg: 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

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

Note: This is tested with ActiveAdmin (v1.1.0 and 2.0.0.alpha)
Hope this works with other version as well. Please update this answer if you are sure it works with other versions you know.

    
ответ дан illusionist 25.08.2017 в 06:21