Как добавить обратную ссылку на приложение в ActiveAdmin?

Мне нужно добавить несколько ссылок на определенные страницы приложения на страницах ActiveAdmin. Я могу сделать это с помощью боковых панелей, но мне придется повторять код для каждого из моих ресурсов. Можно ли как-то добавить пользовательские ссылки в шапку? Или определить боковую панель, которая будет отображаться для всех ресурсов?


person karthik c    schedule 26.08.2011    source источник


Ответы (3)


Я также не хотел бы упускать из виду настройку config.site_title_link в файле initializers/active_admin.rb.

Я почти уверен, что он принимает символ, представляющий имя маршрута из вашего приложения, например:

config.site_title_link = :root

свяжет название сайта с root_path вашего приложения.

person Michael Hellein    schedule 23.09.2011
comment
Спасибо! Использовал старую версию ActiveAdmin, которая не поддерживает настраиваемую ссылку заголовка. Обновил до последней версии и настроил. - person karthik c; 27.09.2011
comment
И да, он также поддерживает символы - person karthik c; 27.09.2011
comment
Рад слышать, что это работает для вас - очевидно, если вам нужно более одной ссылки в заголовке, это не поможет. Но, похоже, очень хорошее начало! - person Michael Hellein; 05.10.2011

Спасибо @phoet! Вместо этого реализовал это, переопределив HeaderRenderer:

  module ActiveAdmin
    module Views
      class HeaderRenderer
        def to_html
          title + global_navigation + application_link + utility_navigation
        end

        def application_link
          link_to('Back to Application', root_url)
        end
      end
    end
  end
person karthik c    schedule 28.08.2011
comment
Это нужно где-то конкретно указывать? пример: app/admin/views/header_renderer.rb? - person mbillard; 27.04.2012
comment
@mbillard: вы можете поместить его в любой из ваших файлов в том же каталоге, где вы определяете все свои страницы. Этот код перезапишет методы во внутренних классах ActiveAdmin. - person Daniel Magliola; 11.05.2012
comment
Правильно, или лучше поместить это в отдельный файл (возможно, с именем active_admin_initializer.rb) в каталоге config/initializers. Все файлы в каталоге config/initializers будут загружены Rails во время запуска. - person karthik c; 14.05.2012
comment
Похоже, это не работает в ActiveAdmin ›= 0.5.0, на этот вопрос есть подходящий ответ, но он все еще не идеален. stackoverflow.com/ вопросы/9620165/ - person ARun32; 27.09.2012

я думаю, что нет встроенного способа сделать это, но вы можете переопределить логику рендеринга в TabsRenderer (2.2) / TabbedNavigation (3.0):

  def render_menu(menu)
    content_tag :ul, :id => @options[:id] do
      menu.items.collect do |item|
        render_item(item)
      end.join.<<('your_custom_stuff').html_safe
    end
  end
person phoet    schedule 26.08.2011