2012-03-10 14 views
1

表示ユーザーの権限に基づいてメニューを動的に変更したいと考えています。私はsuperadminユーザーが通常のResourceアクション(インデックス、表示、更新など)にアクセスできるようにしたいと思います。管理者がメニュー項目をクリックすると、そのリソースのインデックスに移動します。私は通常の管理者ユーザーを特定のショーページを見るだけに制限したいと思います。Active Adminのメニュー項目を表示する

superadminのメニュールートは次のようになります/管理/リソース
通常の管理者用メニューのルートは次のようになります/管理/リソース/ ID私もに、通常の管理者のアクセスを制限したい

インデックスビュー、またはアクセスできない他のリソースにアクセスできます。私はこれらの両方を達成することができましたが、メニュー項目をまだ特定のショーページにマップすることができませんでした。私はカスタムページとビューを作成することができると知っていますが、本当にスーパーDSLと通常の管理者の間でショーと編集のためのカスタムDSLを共有したいと思います。

これを実現する方法は誰でも知っています。

答えて

1

わかりましたので、私は自分が望むものを得る方法を考えました。私は私が望むものを正確に果たすかどうかはわかりません。 (つまり、特定のリソースにマッピングされたカスタムメニュー項目を作成するといいでしょう)

インデックスコントローラのアクションを上書きして、特定の表示ページにリダイレクトしました。スーパー管理者は元のStoreリソースにアクセスする必要があるため、次のようにエイリアスする必要がありました。

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 
関連する問題