2013-07-11 12 views
8

ActiveAdminのドキュメントは、私がこのようなユーティリティのナビゲーションをオーバーライドすることができると言う:Rails ActiveAdmin - ユーティリティナビゲーションでcurrent_admin_userを取得しますか?

ActiveAdmin.setup do |config| 
    config.namespace :admin do |admin| 
    admin.build_menu :utility_navigation do |menu| 
     menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info", html_options: { target: :blank } 
     admin.add_logout_button_to_menu menu # can also pass priority & html_options for link_to to use 
    end 
    end 
end 

また、デフォルトの表示は、現在のユーザの電子メールアドレスが含まれていることを言います。現在のユーザーの電子メールアドレスはどのように取得されますか? menu.add labelの値をcurrent_admin_userに置き換えると、current_admin_userが定義されていないというエラーが表示されます。設定ファイルから現在ログインしているユーザーに関する情報にアクセスするにはどうすればよいですか? ActiveAdminはその背後でどのようにそれをしますか?

答えて

9
config.namespace :admin do |admin| 
     admin.build_menu :utility_navigation do |menu| 
     menu.add :label => proc{ display_name current_active_admin_user }, 
        :url => proc{ edit_admin_admin_user_path(current_active_admin_user) } ,#link_to current_active_admin_user, 
        :id  => 'current_user', 
        :if  => proc{ current_active_admin_user? } 
     admin.add_logout_button_to_menu menu 
     end 
    end 
+0

は、コードをありがとうございました。なぜそれが場面の裏で働くのか、なぜ私が得たエラーを受けているのか説明できますか? – Kvass

+0

これは、必要なコンテキストで呼び出されるprocsを使用しているために動作します。したがって、current_admin_userはproc呼び出しの瞬間に定義されます。 – Fivell

+0

無関係なqの一種 - ブロックがprocであれば(私の理解では)、なぜブロックに渡すことができないのですか? ':if => {current_active_admin_user? } 'とそれの前に' proc'をスキップしますか?それの前にある 'proc'はどうしますか? – Kvass

3

ただ、次の操作を試してください。

ActiveAdmin.setup do |config| 
    config.namespace :admin do |admin| 
    admin.build_menu :utility_navigation do |menu| 
     menu.add label: "ActiveAdmin.info", url: "http://www.activeadmin.info", 
             html_options: { target: :blank } 
     admin.add_current_user_to_menu menu 
     admin.add_logout_button_to_menu menu 
    end 
    end 
end 
関連する問題