[RUBY] [Schienen] Speichern Sie nur markierte Elemente in der Datenbank

Nachdem ich eine Frage zu Teratail gestellt hatte, löste ich sie selbst. Die Seite ist so schwer (?), Dass ich sie nicht posten konnte, also schreibe ich sie zuerst hier.

Was ich machen wollte

Da die Eingabe über das Terminal langweilig war, habe ich in der Anwendung ein Buchungsformular erstellt, um es später für Benutzer zu verbessern, ohne es in Version 1 zu veröffentlichen. Die folgenden Filminformationen können mit der neuen Methode in der Datenbank registriert werden. - "Titel": Titel der Arbeit "Regie": Name des Regisseurs "Geschichte": Inhaltsangabe "Dienst": Name des Vertriebsdienstes, aus dem die Inhaltsangabe zitiert wird "Zeit": Spielzeit

Ich wollte den Namen des Lieferservices aus diesen vier Kontrollkästchen auswählen und den aktivierten Servicenamen in der Datenbank speichern, aber der Artikel, auf den ich mich bezog, war das Kontrollkästchen `. Da der Inhalt das Element speichern und den Status in einem Array überprüfen sollte, musste "nur der überprüfte Wert extrahiert werden", um ihn zu realisieren.

Kontrollkästchen werden mit dem Tag "check_box" platziert.

<div class="box form4">
  <%= check_box "service", "PrimeVideo" %>PrimeVideo
  <%= check_box "service", "Netflix" %>Netflix
  <%= check_box "service", "Hulu" %>Hulu
  <%= check_box "service", "U-NEXT" %>U-NEXT
</div>

Direkt in der Steuerung

service: params[:service]

Wenn Sie schreiben, wird der generierte Hash in der Spalte "service" der Datenbank gespeichert. Wenn das Kontrollkästchen deaktiviert ist, ist der Wert "0", und wenn dies der Fall ist, ist "1" der Wert.

{"PrimeVideo"=>"0", "Netflix"=>"1", "Hulu"=>"0", "U-NEXT"=>"0"}

Von hier aus möchte ich nur den Servicenamen des markierten Elements extrahieren und speichern (dh den Schlüssel, dessen Wert "1" ist)! Vielleicht, weil ich überhaupt nicht genug Grundkenntnisse hatte, wusste ich nicht, wie ich es machen sollte und ließ es in Ruhe.

Lösungen

def req
 params[:service].each do | di1 , di2 |
  if di2 == "1"
   @movie = Movie.new(
	  title: params[:title],
	  directed: params[:directed],
	  story: params[:story],
	  service:di1,
	  time: params[:time]
   )
   @movie.save
  end
 end
end

Ich habe den Code von [Artikel, auf den ich mich ursprünglich bezogen habe] umgeleitet (https://gattsu09.hatenadiary.com/entry/2018/06/21/001805).

Befolgen Sie die Anweisungen.

Wenn der Dienstname nicht aktiviert ist, wird die ** Speichermethode nicht an erster Stelle ausgeführt **, aber ... ich habe keine Zeit, also möchte ich jetzt einfach weitermachen ... Wenn ich mich beruhigt habe, werde ich versuchen, den Grundstein um die Teile zu legen, die zu etwas höflicherem Code verarbeitet werden können, wie z. B. die "select-Methode", die "keys-Methode" und die SQL-Syntax.

Wir möchten allen Befragten, die uns die Gelegenheit gegeben haben, unseren aufrichtigen Dank aussprechen.

Recommended Posts

[Schienen] Speichern Sie nur markierte Elemente in der Datenbank
Schienen testen db nur fallen
Group_by in Rails
[Japanische Lokalisierung] i18n-Schienen Nur einfache Anzeige der japanischen Lokalisierungsansicht
Schienen db: 〇〇 Zusammenfassung
Einfache Benachrichtigungsfunktion in Rails (nur wenn befolgt)
[Ruby On Rails] So setzen Sie die Datenbank in Heroku zurück
twitter4j java Speichern Sie die gesuchten Tweets in DB (MySQL).
Modellassoziation in Rails
Hinzufügen von Spalten in Rails
Deaktivieren Sie Turbolinks in Schienen
Schienen db: Migration fehlgeschlagen!
[Rails] Rails DB-Befehlsübersicht
Verwenden Sie Bilder mit Schienen
Migration in Schienen verstehen
Teilen Sie route.rb in Rails6
Markdown in Rails implementiert
[Rails] Travis CI vorstellen und in db: create stecken bleiben