2011-08-26 8 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

これは特にどこに置かなければなりませんか? ex: 'app/admin/views/header_renderer.rb'? – mbillard

+0

@mbillard:すべてのページを定義するのと同じディレクトリにあるファイルのいずれかに置くことができます。このコードは、内部ActiveAdminクラスのメソッドを上書きします。 –

+0

これは、config/initializersディレクトリの下に別のファイル(active_admin_initializer.rbと呼ばれることもある)に置かれます。 "config/initializers"ディレクトリにあるすべてのファイルは、起動時にRailsによってロードされます。 –

関連する問題