Wie löschen Sie mehrere Datensätze mithilfe von Kontrollkästchen in Rails 3?Rails 3 - Löschen mehrerer Datensätze mithilfe von Kontrollkästchen
Antwort
routes.rb:
resources :blog_posts do
collection do
delete 'destroy_multiple'
end
end
index.html.erb:
<%= form_tag destroy_multiple_blog_posts_path, method: :delete do %>
<table>
...
<td><%= check_box_tag "blog_posts[]", blog_post.id %></td>
...
</table>
<%= submit_tag "Delete selected" %>
<% end %>
blog_posts_controller.rb:
def destroy_multiple
BlogPost.destroy(params[:blog_posts])
respond_to do |format|
format.html { redirect_to blog_posts_path }
format.json { head :no_content }
end
end
Senden Sie die IDs aller geprüften Elemente an den Controller. Ich gehe davon aus u haben ids senden für Foo Klasse gelöscht werden, um
ids = params[:ids]
Foo.where("id in (#{ids}")).destroy
oder
ids = params[:ids].split(",")
Foo.where(id => ids).destroy
Verwendung zerstören gelöscht werden, verwenden Sie keine löschen, wenn Sie irgendwelche Abhängigkeiten haben.
'.where (: id => (params [: blog_posts])) .des troy 'würde mir' ArgumentError in BlogPostController # destroy_multiple \ falsche Anzahl von Argumenten geben (0 für 1) '. – user202448
siehe Änderungen in meiner Antwort. –
Angenommen, Sie möchten eine Liste von Datensätzen in einer Tabelle mit jeweils einem Kontrollkästchen anzeigen und über eine Schaltfläche zum Löschen verfügen, mit der alle überprüften Datensätze gelöscht werden.
Zuerst müssen Sie Namen für die Kontrollkästchen erstellen, die den Datensatz-ID enthalten, könnten Sie dies tun:
<%= check_box_tag("delete[#{@thing.id}]",1) %>
Die HTML erstellen, die folgenden
<input id='delete[1000]' type='checkbox' value='1' name='delete[1000]'>
So enthalten wird, wenn Wenn Sie das Formular für die Datensätze mit den IDs 1001 und 1002 aktiviert haben, enthält Ihr Beitrag:
"delete[1001]"=>"1"
"delete[1002]"=>"1"
So in Ihrem Controller, könnten Sie tun, um diese
params[:delete].each do |id|
Thing.find(id.to_i).destroy
end
einfachste Antwort. – courtsimas
- 1. Rails 3 zerstören mehrere Datensätze über Kontrollkästchen
- 2. Löschen mehrerer Datensätze in einer Azure-Tabelle
- 3. mysql: Abfrage mehrerer Datensätze in 3 Tabellen?
- 4. Löschen mehrerer Datensätze nach Liste von IDs mit HQL-Anweisung
- 5. Rails - Löschen nicht gespeicherter verknüpfter Datensätze
- 6. Ruby on Rails: Löschen mehrerer Hash-Schlüssel
- 7. So löschen Sie mehrere Datensätze gleichzeitig mit Rails 3 und mehrere check_box_tag Elemente
- 8. Senden mehrerer Kontrollkästchen Optionen
- 9. Rails 3 - Kontrollkästchen für create (gegenüber von _destroy)
- 10. Löschen mehrerer Datensätze basierend auf bestimmten Bedingungen in Schienen 4
- 11. Rails 3 link_to (: method =>: Löschen) nicht
- 12. Django: Abfrage mehrerer Tabellen mithilfe von Modellen
- 13. Rails 4 Äquivalent von Rails 3 'Model.all'
- 14. Validierung mehrerer Kontrollkästchen Laravel 5.2
- 15. Mehr als 2 oder 3 identische Datensätze: Löschen Mysql
- 16. Aktualisieren mehrerer Datensätze auf einmal mit Django
- 17. PHP Löschen MySQL Datensätze älter als 3 Tage
- 18. Optionsfelder, Kontrollkästchen nicht vertikal mit Beschriftungen ausgerichtet (Rails 3)
- 19. Datensätze mit Gridview löschen ASP.NET
- 20. von Visual Basics - Löschen mehrerer Zeilen
- 21. LINQ (Methode) Rückkehr mehrerer Datensätze
- 22. Rails 3, will_paginate, zufällige, wiederholte Datensätze, Postgres, setseed Fehler
- 23. Rails 3-Vorlagen: Rendern mehrerer Formate mit demselben Vorlagen-Handler
- 24. Hive Löschen doppelter Datensätze
- 25. Verknüpfung mehrerer Bilder mithilfe einer Schleife aufheben
- 26. Datenbank Datensätze löschen
- 27. Bootstrap 3 Kontrollkästchen Label
- 28. Kontrollkästchen in Rails 1 vs. Rails 2
- 29. Rails Form mit 3 Submit-Buttons
- 30. SQL Datensätze löschen, um
Wenn BlogPost zu einer Sammlung gehört, wie würde das funktionieren? Beispiel:/collection/1/blogpost/1 – dngoo
Danke. Mit Rails 4 musste ich splat vor params setzen, wie '* params [: blog_posts]', sonst würde es einen Fehler werfen: 'ActiveRecord :: AssociationTypeMismatch: BlogPost (# - 580055888) erwartet, bekam String (# - 603015658) ' –
Das ist eine wirklich gute Antwort. Wissen Sie, wie ich eine Validierung hinzufügen könnte, um sicherzustellen, dass ein Benutzer ein Kontrollkästchen aktiviert hat, wenn er auf die Schaltfläche zum Löschen klickt? –