Dies ist ein Memorandum zum Importieren der Pulldown-Menüelemente, wenn ein Formular mit Rails gesendet und mithilfe der DB-Daten angezeigt wird.
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
Es ist ein Bild der Erscheinung ↓
Die Pulldown-Menüoptionen werden anhand der in der Datenbank ↓ gespeicherten Spalteninformationen angezeigt
Ich werde den CSV-Import und das Formular-Pulldown separat erläutern.
Rails
ausDer 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).
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
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
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
Ä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.
Recommended Posts