Verwenden Sie das Juwel enum_help, um den Vorgang zum Erstellen des Auswahlfelds aufzuzeichnen, das auf Japanisch als Memorandum angezeigt wird.
・ Ruby '2.5.7' ・ Schienen '5.2.3' ・ Enum_help '0.0.17'
Fügen Sie Ihrem Gemfile enum_help hinzu.
gem 'enum_help'
"Bundle-Installation" im Terminal.
bundle install
Fügen Sie die Zielspalte hinzu.
db/migrate/20xxxxxxxxx_add_place_to_datespots.rb
class AddPlaceToDatespots < ActiveRecord::Migration[5.2]
def change
add_column :datespots, :place, :integer
end
end
"Rails db: migrate" im Terminal.
rails db:migrate
Nach dem Vorbereiten der Aufzählungsspalte in der Tabelle besteht der nächste Schritt darin, der Aufzählungsspalte mehrere Konstanten zuzuordnen.
app/models/datespot.rb
class Datespot < ApplicationRecord
(Kürzung)
enum place: {
Ginza: 0, Yurakucho: 1, Shinbashi: 2, Hamamatsucho: 3, Tamachi: 4, Shinjuku: 5,
Yoyogi: 6, Okubo: 7, Shibuya: 8, Omotesando: 9, Aoyama: 10, Harajuku: 11,
Akasaka: 12, Roppongi: 13, Azabu: 14, Marunouchi: 15, Nihonbashi: 16, Kanda: 17,
Ningyocho: 18, Ikebukuro: 19, Jiyugaoka: 20, Sangenjaya: 21, Futakotamagawa: 22, Shinagawa: 23,
Gotanda: 24, Osaki: 25, Odaiba: 26, Toyosu: 27, ebisu: 28, Hiroo: 29,
Shirogane: 30, Daikanyama: 31, Nakameguro: 32, Meguro: 33, Iidabashi: 34, Yotsuya: 35,
Kagurazaka: 36, Ueno: 37, Asakusa: 38, Nakano: 39, Kichijoji: 40, Tachikawa: 41, Others: 42
}
end
Fügen Sie eine japanische Übersetzung zu config / locales / ja.yml hinzu.
config/locales/ja.yml
ja:
enums:
datespot:
place:
Ginza:Ginza
Yurakucho:Yurakucho
Shinbashi:Shimbashi
Hamamatsucho:Hamamatsu Stadt
Tamachi:Tamachi
Shinjuku:Shinjuku
Yoyogi:Yoyogi
Okubo:Okubo
Shibuya:Shibuya
Omotesando:Omotesando
Aoyama:Aoyama
Harajuku:Harajuku
Akasaka:Akasaka
Roppongi:Roppongi
Azabu:Azabu
Marunouchi:Marunouchi
Nihonbashi:Nihonbashi
Kanda:Kanda
Ningyocho:Ningyocho
Ikebukuro:Ikebukuro
Jiyugaoka:Jiyugaoka
Sangenjaya:Sangenchaya
Futakotamagawa:Futako Tamagawa
Shinagawa:Shinagawa
Gotanda:Gotanda
Osaki:Osaki
Odaiba:Odaiba
Toyosu:Toyosu
ebisu:Ebisu
Hiroo:Hiroo
Shirogane:Platin
Daikanyama:Daikanyama
Nakameguro:Nakameguro
Meguro:Meguro
Iidabashi:Iida-Brücke
Yotsuya:Yotsuya
Kagurazaka:Kagurazaka
Ueno:Ueno
Asakusa:Asakusa
Nakano:Nakano
Kichijoji:Kichijoji
Tachikawa:Tachikawa
Others:Andere
Erstellen Sie ein Auswahlfeld mit der praktischen Methode enum_help.
app/views/datespots/_datespot_form.html.erb
<%= form_with model: @datespot, local: true do |f| %>
(Kürzung)
<div class = 'form-group'>
<%= f.label :place %> <span class="input-need">* Erforderlich</span>
<%= f.select :place, options_for_select(Datespot.places_i18n.invert, selected: f.object.place), { include_blank: true }, { class: 'form-control', id: 'datespot_place' } %>
</div>
<% end %>
Ich mache japanische und englische Hashes mit "Datespot.places_i18n.invert".
irb(main):001:0> Datespot.places_i18n.invert
=> {"Ginza"=>"Ginza", "Yurakucho"=>"Yurakucho", "Shimbashi"=>"Shinbashi", "Hamamatsu Stadt"=>"Hamamatsucho", "Tamachi"=>"Tamachi", "Shinjuku"=>"Shinjuku", "Yoyogi"=>"Yoyogi
", "Okubo"=>"Okubo", "Shibuya"=>"Shibuya", "Omotesando"=>"Omotesando", "Aoyama"=>"Aoyama", "Harajuku"=>"Harajuku", "Akasaka"=>"Akasaka", "Roppongi"=>"Roppongi", "Hanf
Stoff"=>"Azabu", "Marunouchi"=>"Marunouchi", "Nihonbashi"=>"Nihonbashi", "Kanda"=>"Kanda", "Ningyocho"=>"Ningyocho", "Ikebukuro"=>"Ikebukuro", "Jiyugaoka"=>"Jiyugaoka",
"Sangenchaya"=>"Sangenjaya", "Futako Tamagawa"=>"Futakotamagawa", "Shinagawa"=>"Shinagawa", "Gotanda"=>"Gotanda", "Osaki"=>"Osaki", "Odaiba"=>"Odaiba", "Toyosu"=>"To
yosu", "Ebisu"=>"ebisu", "Hiroo"=>"Hiroo", "Platin"=>"Shirogane", "Daikanyama"=>"Daikanyama", "Nakameguro"=>"Nakameguro", "Meguro"=>"Meguro", "Iida-Brücke"=>"Iidaba
shi", "Yotsuya"=>"Yotsuya", "Kagurazaka"=>"Kagurazaka", "Ueno"=>"Ueno", "Asakusa"=>"Asakusa", "Nakano"=>"Nakano", "Kichijoji"=>"Kichijoji", "Tachikawa"=>"Tachikawa",
"Andere"=>"Others"}
Enthält den in "selected: f.object.place" ausgewählten Wert.
Ein leeres Element wird am Anfang mit "include_blank: true" hinzugefügt.
Jetzt haben Sie das folgende Auswahlfeld!
Wenn Sie einen Wert in der Ansicht empfangen und "_i18n" hinzufügen, wird dieser übrigens auf Japanisch angezeigt.
app/views/datespots/_datespot.html.erb
(Kürzung)
<%= datespot.place_i18n %>
EnumHelp [Rails] enum tutorial
Recommended Posts