2012-03-10 56 views
1

我想根据查看用户的权限动态更改菜单。我希望superadmin用户能够访问正常的资源操作(索引,显示,更新等)。所以当一个管理员点击一个菜单项时,它会将它们带到该资源的索引处。我想限制普通管理员用户只查看特定的显示页面。在Active Admin中查看菜单项的显示页面

为超级管理员的菜单路径是:/管理/资源
为正常管理的菜单路径是:/管理/资源/ ID

我也想限制正常的管理权限索引视图或他们无权访问的其他资源。我已经能够实现这两件事,但我还没有能够将菜单项映射到特定的显示页面。我知道我可以创建一个自定义页面和视图,但我真的很想在superadmin和普通管理员之间共享显示和编辑页面的自定义DSL。

任何人都知道如何做到这一点。

回答

1

好的,所以我想出了一种方法来得到我想要的。我不确定是否完全符合我的要求。 (这意味着创建映射到特定资源的自定义菜单项会很好)

我刚刚覆盖了索引控制器操作以重定向到特定的显示页面。由于超级管理员需要访问原始商店资源,因此我必须使用as来进行别名。

ActiveAdmin.register Store, :as => 'My Store' do 
    menu :if => proc{ !current_user.is_admin? }, 
     :label => 'My Store' 

    actions :show, :edit, :update 

    controller do 
    def index 
     redirect_to(admin_my_store_url(current_user.store)) 
    end 
    end 
end 
相关问题