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 ?
Réponses
Trop de publicités?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
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.