in Rails Gem Activeadmin möchte ich die Löschoption aus den Standardaktionen entfernen, während ich noch die Aktion Bearbeiten und Anzeigen benötige. Gibt es eine Möglichkeit, dies zu tun?
Sie fügen jeder Active Admin-Ressource einen Aufruf von actions
hinzu:
ActiveAdmin.register Foobar do
actions :all, :except => [:destroy]
end
Irgendwann hatte ich dieses Problem. Aufgrund der Zerstörungsmethode verschwand die Schaltfläche "Löschen" nicht
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
Die akzeptierte Antwort hat eine Ausnahme ausgelöst, "falsche Anzahl von Argumenten". Deshalb habe ich den Lösch-Button (: Aktion zerstören) ausgeschlossen
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
Eine andere Möglichkeit, Aktionen aus default_actions für eine ActiveAdmin
-Ressource zu entfernen, ist über die config
-Variable:
ActiveAdmin.register MyUser do
config.remove_action_item(:destroy)
...
end
Eine Möglichkeit ist bereits in der akzeptierten Antwort über die Methode
actions
erwähnt.
Wenn Sie die Schaltfläche zum Entfernen der Zerstörung vollständig entfernen möchten, verwenden Sie: Aktionen: alle, außer: [: Zerstören]
Wenn jedoch die Schaltfläche "Löschen" eine Bedingung erfordert, die auf den Ressourceneigenschaften basiert (z. B. zugehörige Daten oder Status).
Auf der Indexseite: Index do ...... ...... Aktionen Standardwerte: false do | Zeile | wenn kann? : read, Zeile text_node link_to "View", admin_resource_path (row), Klasse: "view_link" Ende if can? : edit, Zeile text_node link_to "Edit", admin_resource_path (row), Klasse: "edit_link" Ende if can? : destroy, Zeile text_node link_to I18n.t ('active_admin.delete'), admin_resource_path (row), method:: delete, data: {confirm: I18n.t ('active_admin.delete_confirmation')}, Klasse : "delete_link" wenn row.deletable? Ende Ende
ende
Nun, der komplexe Teil und ich musste mehrmals auf den Kopf schlagen, um ihn auf der Show-Seite zu kontrollieren:
config.remove_action_item (: destroy) # entfernt die Schaltfläche "destroy"
nur action_item:: 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?
ende
Entschuldigung für meine schreckliche Formatierung.