2012-03-10 59 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 
相關問題