Rails 3 ActiveAdmin. Сокрытие кнопок в соответствии с разрешениями CanCan - PullRequest
4 голосов
/ 20 января 2012

ActiveAdmin и CanCan работают вместе. Я уже установил права администратора и клиента.

Теперь я хочу скрыть кнопки «Создать», «Редактировать» и «Удалить» в соответствии с разрешениями, установленными CanCan, но следующая строка дает мне ошибки ...

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

Это тоже

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

1 Ответ

0 голосов
/ 07 ноября 2012

Я использую этот патч обезьяны для проверки прав доступа перед отображением кнопок

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
...