【问题标题】:How to hide the resource in activeadmin gem如何在 activeadmin gem 中隐藏资源
【发布时间】:2026-01-04 01:25:01
【问题描述】:

我使用 activeadmin gem http://activeadmin.info/ 创建了一个管理页面 我使用cancan授权两种用户的权限,用户管理用户和图书管理用户。

我的问题是:当图书管理用户登录到管理页面时,我如何隐藏资源用户?

我尝试了类似的方法,但没有成功

 menu false  if can? :manage, BookHeader 

 menu false  if authorize! :manage, BookHeader

感谢您的帮助!

【问题讨论】:

    标签: ruby-on-rails-3 activeadmin cancan


    【解决方案1】:

    你必须使用 proc 来动态构建菜单

    例子

    动态标签

    menu :label => proc{current_admin_user.admin? ? "Accounts" : "My Account"}
    

    显示/隐藏

     menu :if => proc{ can?(:manage, BookHeader ) }   
    

    有关集成 AA 和 CanCan 的更多信息,请阅读本文

    https://github.com/gregbell/active_admin/wiki/How-to-work-with-cancan

    【讨论】:

    • 这个不适合我。只有 if 块的 proc 知道 current_user,label 的 proc 不知道它
    【解决方案2】:

    我用这个: 对我来说是 users 为 adminuser, 密码 无管理员用户

    menu label: proc{I18n.t "#{current_user.is_admin? ? 'users':'password'}"}
    

    按照你的例子

    menu label: proc{I18n.t "#{current_admin_user.admin? ? 'Accounts' : 'My Account'}"}
    

    会有帮助

    【讨论】: