2012-01-19 7 views
4

ActiveAdminとCanCanが連携して動作しています。私は既に管理者と顧客の権限を設定しています。Rails 3 ActiveAdmin。 CanCan権限に基づいてボタンを隠す

今、私はカンカンで設定された権限に応じて新しい、[編集]を非表示とボタンを削除したいが、次の行は私にエラーを与える...

config.clear_action_items! :if => proc{can? (:destroy, Shipment)} 

この1あまりにも

:if => proc{ can?(:destroy, Shipment)}, actions :all, :except => [:new, :create, :update, :edit, :destroy] 
+0

私は 'current_user'はavailabそのように能力をチェックするために私はそれが設定ファイルのいずれかで利用可能であるとは思わない。 – jibiel

答えて

0

私はこの猿のパッチを使用してボタンを表示する前にアクセス許可をチェックします

module ActiveAdmin 
    class Resource 
    module ActionItems 

     # Adds the default action items to each resource 
     def add_default_action_items 
     # New Link on all actions except :new and :show 
     add_action_item :except => [:new] do 
      if controller.action_methods.include?('new') and can? :create, active_admin_config.resource_class 
      link_to(I18n.t('active_admin.new_model', :model => ''), new_resource_path, 
      :class => "new-link" 
      ) 
      end 
     end 

     # Edit link on show 
     add_action_item :only => :show do 
      if controller.action_methods.include?('edit') and can? :update, active_admin_config.resource_class 

      link_to(I18n.t('active_admin.edit_model', :model => ''), edit_resource_path(resource), 
      :class => "edit-link" 
      ) 


      end 
     end 

     # Destroy link on show 
     add_action_item :only => :show do 
      if controller.action_methods.include?("destroy") and can? :destroy, active_admin_config.resource_class 

      link_to(I18n.t('active_admin.delete_model', :model => ''), 
       resource_path(resource), 
       :class => "delete-link" , 
       :method => :delete, :data => {:confirm => I18n.t('active_admin.delete_confirmation')}) 

      end 
     end 
     end 
    end 
    end 
end