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?
Vous ajoutez un appel à actions
à chaque ressource Active Admin:
ActiveAdmin.register Foobar do
actions :all, :except => [:destroy]
end
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
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
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.