[RUBY] Ich möchte die Pulldown-Menüelemente beim Senden eines Formulars in Rails in CSV importieren und aus den DB-Daten anzeigen.

Einführung

Dies ist ein Memorandum zum Importieren der Pulldown-Menüelemente, wenn ein Formular mit Rails gesendet und mithilfe der DB-Daten angezeigt wird.

Umgebung

Referenz-URL

CSV-Import bezogen https://qiita.com/Ryuta1346/items/c21cb70b9879c66c8639 https://qiita.com/SoarTec-lab/items/50e046ea2a2764c12c21 https://docs.ruby-lang.org/ja/latest/class/CSV.html https://qiita.com/3yatsu/items/416411c0a8f696dbf99e https://qiita.com/rllllho/items/672e336a03335cba6b34

Pulldown-Menü bezogen https://qiita.com/HrsUed/items/56677d6c266d8a53ffa7 https://qiita.com/kawakami_shotaro/items/11a677bf34136cb7686d https://qiita.com/colorrabbit/items/b58888506e41d1370fd1 https://crieit.net/posts/Rails-collection-select https://qiita.com/_akira19/items/c218186983f444c2d794

Ländercode-Liste CSV https://qiita.com/tao_s/items/3yy2b90a2751bfbdd585ea

Ziel

  1. Pulldown-Menüoptionen für den CSV-Import
  2. Zeigen Sie die Auswahlelemente des Pulldown-Menüs anhand der DB-Daten an

Es ist ein Bild der Erscheinung ↓ form1.png

Die Pulldown-Menüoptionen werden anhand der in der Datenbank ↓ gespeicherten Spalteninformationen angezeigt form2.png

Implementierung

Ich werde den CSV-Import und das Formular-Pulldown separat erläutern.

1. Pulldown-Menüoptionen für den CSV-Import

  1. Erstellen Sie ein Ländermodell zum Speichern der Ländernamenliste
  2. Fügen Sie den Importprozess zu db / seeds.rb hinzu
  3. Führen Sie den Importvorgang mit dem Befehl Rails aus

Der Importvorgang wird mithilfe der CSV-Bibliothek von Ruby ausgeführt. Dieses Mal habe ich die Ländernamenliste aus der folgenden CSV importiert. Ich habe die erstellte CSV-Datei zum Stammverzeichnis hinzugefügt.

country.csv


Nummer,Name des Landes / der Region,ISO 3166-Englischer Name in 1,Nummer,Drei Zeichen,Zwei Zeichen,Ort,Jede Verwaltungsabteilung
1,Island,Iceland,352,ISL,IS,Nordeuropa,ISO 3166-2:IS
2,Irland,Ireland,372,IRL,IE,Westeuropa,ISO 3166-2:IE

Für CSV habe ich [Country Code List CSV] verwendet (https://qiita.com/tao_s/items/32b90a2751bfbdd585ea).

1. Erstellung eines Ländermodells

Ich habe das folgende Modell erstellt. Die Regionsspalte wird diesmal nicht verwendet.

attribute type
country_name string
region string
#Ländermodellierung
$ rails g model Country country_name:string region:string

2. Importprozess hinzufügen

Der Importvorgang wurde zu seeds.rb hinzugefügt. Es scheint eine separate Datei erstellt zu haben und So führen Sie sie mit dem Befehl running aus.

seeds.rb


require "csv"

#Geben Sie den Pfad zur CSV-Datei als absoluten Pfad an
CSV.foreach("country.csv", headers: true) do |row|
  Country.create!(
    country_name: row["Name des Landes / der Region"],
    region: row["Ort"]
  )
end

3. Führen Sie den Importvorgang aus

Führen Sie einen CSV-Import mit dem Befehl "Rails" durch. Ich habe auch andere Prozesse in die Seed-Datei geschrieben, also habe ich diesmal alles in der Datenbank gelöscht und erneut importiert.

#Dies ist alles, was Sie benötigen, um eine CSV zu importieren und in Ihrer Datenbank zu speichern
$ rails db:seed

#Löschen Sie die Datenbank und setzen Sie alles wieder ein
$ rails db:migrate:reset
$ rails db:seed

#Überprüfen Sie, ob es in die Rails-Konsole importiert wurde
$ rails c
#Überprüfen Sie die Anzahl der importierten Ländernamen
> Country.count
249

2. Zeigen Sie die Auswahlelemente des Pulldown-Menüs anhand der DB-Daten an

Ändern Sie die Ansichtsdatei der Formularübermittlung zum Zeitpunkt der neuen Veröffentlichung.

Ruby:view/model_names/new.html.erb


#Vor der Korrektur
<%= form_with model: @model_name do |f| %>
  <%= f.label :country %>
  <%= f.text_field :country %>

  <%= f.submit "Senden" %>
<% end %>

Ruby:view/model_names/new.html.erb


#Überarbeitet
<%= form_with model: @model_name do |f| %>
  <%= f.label :country %>
  <%= f.collection_select :country, Country.all, :id, :country_name, prompt: "Bitte wähle ein Land" %>

  <%= f.submit "Senden" %>
<% end %>
# collection_Syntax auswählen
<%= f.collection_select <Spaltenname des Speicherziels>, <Array-Daten zur Anzeige>, <Spaltenname des zu speichernden Werts>,  <Spaltenname für die Anzeige>, <Möglichkeit> %>

Hier Die Erklärung zur Verwendung von "collection_select" ist sehr einfach zu verstehen.

Lernen

Recommended Posts

Ich möchte die Pulldown-Menüelemente beim Senden eines Formulars in Rails in CSV importieren und aus den DB-Daten anzeigen.
[Rails] Ich möchte Daten verschiedener Modelle in einem Formular senden
[Rails] Ich möchte das Linkziel von link_to auf einer separaten Registerkarte anzeigen
Ich möchte ein Formular erstellen, um die Kategorie [Schienen] auszuwählen
Ich möchte bei der Registrierung in der Datenbank eine Fehlermeldung anzeigen
[Für Anfänger] Ich möchte mit einem Auswahlbefehl automatisch vorregistrierte Daten in das Eingabeformular eingeben.
Ich möchte das in der Datenbank gespeicherte Protokoll morphologisch analysieren und in der Datenbank speichern, um Nachrichten 1 zu klassifizieren
Ich möchte ein kleines Symbol in Rails verwenden
Ich möchte eine Funktion in der Rails Console definieren
Ich möchte die Anzeige der oberen Verwaltungsnavigationsleiste (Steuerungsmenü) in Liferay 7 / DXP steuern
In Java möchte ich mehrere angegebene Zeichen nur von Anfang bis Ende abschneiden.
So lösen Sie das Problem, wenn der Wert nicht gesendet wird, wenn das Formular in Schienen deaktiviert und gesendet wird
Ich möchte eine Methode aufrufen und die Nummer zählen
[Rails] Was tun, wenn der Fehler Keine Datenbank ausgewählt und Unbekannte Datenbank in db: migrate angezeigt wird?
[Controller] Ich möchte den numerischen Wert einer bestimmten Spalte aus der Datenbank abrufen (mein Memo).
Daten sortieren Absteigend, aufsteigend / Schienen
[Rails] Ich möchte beim Übergang mit link_to Daten zu Params hinzufügen
[Android] Ich möchte den Listener über die Schaltfläche in ListView abrufen
Ich habe die Punkte zusammengefasst, die bei der kombinierten Verwendung von Ressourcen und Ressourcen zu beachten sind
Ich möchte im Dialogfeld mehrere Elemente mit einem benutzerdefinierten Layout auswählen
[Ruby] Ich möchte veröffentlichte Artikel in der Reihenfolge des neuesten Datums anzeigen
[Rails 6] cocoon_ Fügen Sie dem hinzuzufügenden Formular ID- und Datenattribute hinzu
Ich möchte ein chinesisches (koreanisches) PDF mit dünnen Berichten anzeigen
Ich möchte die IP-Adresse erhalten, wenn ich mit Java eine Verbindung zu Wi-Fi herstelle
[Rubiy] Ich möchte mit der Split-Methode ein Array aus einer Zeichenfolge erstellen. Und umgekehrt.
[Rails] Ich möchte alles zurücksetzen, weil die Daten in der lokalen Umgebung falsch sind! Was ist vorher zu tun?
Ein Memo zum Erstellen eines einfachen Formulars, das nur HTML und CSS in Rails 6 verwendet
Ein Skript, das Yaml aus CSV erstellt, um Anfangsdaten in Rails with Fixtures einzufügen
Ich möchte nur die Zeit aus Zeittypdaten abrufen ...! [Strftime] * Zusätzliche Hinweise
So erstellen Sie eine eindeutige Datenkombination in der Schienen-Zwischentabelle
Ich möchte rekursiv die Oberklasse und die Schnittstelle einer bestimmten Klasse erhalten
Ich habe versucht, die Telefonnummer (Festnetz / Mobiltelefon) mit einem regulären Ausdruck in Rails auszudrücken und Validierung und Test zu schreiben
Auch wenn ich den Inhalt eines Datenobjekts in Java in JSON konvertieren möchte, gibt es einen Zirkelverweis ...
Ich möchte die MD5-Prüfsumme einer Datei in Java finden und das Ergebnis als Zeichenfolge in hexadezimaler Notation erhalten.