web-dev-qa-db-fra.com

Comment supprimer le formulaire d'option de suppression activeAdmin?

dans Rails gem activeadmin, je souhaite supprimer l’option de suppression des actions par défaut pendant que j’ai encore besoin des actions d’édition et d’affichage. Y a-t-il un moyen de le faire?

40
Kareem Hashem

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

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

A un moment donné, j'ai eu ce problème, à cause de la méthode destroy, 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
7
vladCovaliov

La réponse acceptée a renvoyé une exception, "nombre incorrect d'arguments", donc j'ai exclu le bouton de suppression (action de destruction)

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
1
Means

Si vous souhaitez supprimer complètement le bouton de destruction, utilisez: Actions: toutes, sauf: [: destroy]

Mais si le bouton de suppression nécessite une condition basée sur les propriétés de la ressource (par exemple, les données associées ou le statut). 

A la page d'index: Index do ...... ...... Actions par défaut: false do | row | si peut? : 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), classe: "edit_link" end si peut? : détruire, ligne text_node link_to I18n.t ('active_admin.delete'), admin_resource_path (ligne), méthode:: delete, données: {confirm: I18n.t ('active_admin.delete_confirmation')}, classe : "delete_link" si row.deletable? end end

fin

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

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

0
cool_php