47 votes

Comment supprimer l'option de suppression dans ActiveAdmin ?

Dans l'administration active de rails Gem, je veux supprimer l'option de suppression des actions par défaut alors que j'ai toujours besoin des actions de modification et d'affichage, y a-t-il un moyen de le faire ?

106voto

Thomas Watson Points 2260

Vous ajoutez un appel à actions à chaque ressource Active Admin :

ActiveAdmin.register Foobar do
  actions :all, :except => [:destroy]
end

9voto

vladCovaliov Points 701

À un moment donné, j'ai eu ce problème : à cause de la méthode de destruction, le bouton "Supprimer" n'a pas disparu.

actions :all, except: [:destroy]

controller do
  def destroy # => Because of this the 'Delete' button was still there
    @user = User.find_by_slug(params[:id])
    super
  end    
end

2voto

Means Points 132

La réponse acceptée a déclenché une exception, "nombre d'arguments incorrect", alors j'ai fait ceci pour exclure le bouton de suppression(:action destroy)

ActiveAdmin.register YourModel do
  actions :index, :show, :new, :create, :update, :edit

   index do

     selectable_column
     id_column
     column :title
     column :email
     column :name

    actions 
   end

2voto

Manoj Sehrawat Points 1233

Une autre façon de supprimer les actions de default_actions pour une ActiveAdmin se fait via config variable, comme :

    ActiveAdmin.register MyUser do
      config.remove_action_item(:destroy)
      ...
    end

Un moyen est déjà mentionné dans la réponse acceptée via actions méthode.

0voto

cool_php Points 189

Si vous voulez supprimer complètement le bouton de destruction, utilisez : actions :all, exceptée : [:destroy]

Mais si le bouton de suppression doit être conditionné par les propriétés de la ressource (par exemple, les données ou l'état associés).

A la page d'index :

index do

    # ...

    actions defaults: false do |row|
      if can? :read, row
        text_node link_to "View", admin_resource_path(row), class: "view_link"
      end
      if can? :edit, row
        text_node link_to "Edit", admin_resource_path(row), class: "edit_link"
      end
      if can? :destroy, row
        text_node link_to I18n.t('active_admin.delete'), admin_resource_path(row), method: :delete, data: { confirm: I18n.t('active_admin.delete_confirmation') }, class: "delete_link" if row.deletable?
      end
    end

  end

Maintenant la partie complexe et j'ai dû me cogner la tête plusieurs fois pour la contrôler à la page du spectacle :

config.remove_action_item(:destroy) # va supprimer le bouton de destruction

action_item only : :show do

link_to I18n.t('active_admin.delete'), admin_resource_path(resource), method: :delete, data: { confirm: I18n.t('active_admin.delete_confirmation') }, class: "delete_link" if resource.deletable?

fin

Désolé pour mon mauvais formatage.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X