2011-08-26 6 views
7

ActiveAdmin 페이지에서 응용 프로그램의 특정 페이지에 몇 개의 링크를 추가해야합니다. 사이드 바를 사용하여이 작업을 수행 할 수 있지만 각 리소스에 대한 코드를 반복해야합니다. 헤더에 맞춤 링크를 추가하는 방법이 있습니까? 또는 모든 리소스에 대해 표시되는 사이드 바를 정의 할 수 있습니까?ActiveAdmin에서 응용 프로그램에 다시 링크를 추가하는 방법은 무엇입니까?

답변

14

.

나는 그것이 예를 들어, 응용 프로그램에서 경로의 이름을 나타내는 심볼을 가져 확신 :

config.site_title_link = :root 

이 응용 프로그램의 root_path에 사이트 제목을 연결합니다.

+0

감사합니다. 구성 가능한 제목 링크를 지원하지 않는 이전 버전의 ActiveAdmin을 사용하고있었습니다. 최신 버전으로 업그레이드하고 지금 구성했습니다. –

+0

그리고 그렇습니다. 심볼도 지원합니다. –

+0

마음에 드는 것은 다행입니다. 분명히 헤더에 링크가 두 개 이상 필요하다면이 작업을 수행 할 수 없습니다. 그러나 그것은 아주 좋은 출발처럼 보인다! –

2

내가 거기에 생각이 그것을 할 빌드의 방법입니다,하지만 당신은 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 
11

덕분에 @phoet을! 대신 HeaderRenderer는를 오버라이드하여 구현 : 나는 또한 초기화/active_admin.rb에 config.site_title_link 설정을 간과하고 싶지 않아요

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 
+0

특별히 필요한 부분이 있습니까? 예 :'app/admin/views/header_renderer.rb'? – mbillard

+0

@mbillard : 모든 페이지를 정의한 동일한 디렉토리의 파일 중 하나에 넣을 수 있습니다. 이 코드는 내부 ActiveAdmin 클래스의 메서드를 덮어 씁니다. –

+0

그게 옳은 장소인가, 아니면 이것을 넣을 수있는 더 좋은 곳은 config/initializers 디렉토리 아래에있는 별도의 파일 (active_admin_initializer.rb라고도 함)에있을 것입니다. "config/initializers"디렉토리 아래의 모든 파일은 시작할 때 Rails에 의해로드됩니다. –