wake-up-neo.com

Wie entferne ich die Löschoption von activeAdmin?

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?

40
Kareem Hashem

Sie fügen jeder Active Admin-Ressource einen Aufruf von actions hinzu:

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

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
7
vladCovaliov

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

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.

1
Manoj Sehrawat

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.

0
cool_php