Utilisez la gemme enum_help pour enregistrer le processus de création de la boîte de sélection affichée en japonais sous forme de mémorandum.
・ Rubis '2.5.7' ・ Rails '5.2.3' ・ Enum_help '0.0.17'
Ajoutez enum_help à votre Gemfile.
gem 'enum_help'
"Bundle install" dans le terminal.
bundle install
Ajoutez la colonne cible.
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" dans le terminal.
rails db:migrate
Après avoir préparé la colonne enum dans le tableau, l'étape suivante consiste à associer plusieurs constantes à la colonne enum.
app/models/datespot.rb
class Datespot < ApplicationRecord
(réduction)
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
Ajoutez une traduction japonaise à config / locales / ja.yml.
config/locales/ja.yml
ja:
enums:
datespot:
place:
Ginza:Ginza
Yurakucho:Yurakucho
Shinbashi:Shimbashi
Hamamatsucho:Ville de Hamamatsu
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:platine
Daikanyama:Daikanyama
Nakameguro:Nakameguro
Meguro:Meguro
Iidabashi:Pont d'Iida
Yotsuya:Yotsuya
Kagurazaka:Kagurazaka
Ueno:Ueno
Asakusa:Asakusa
Nakano:Nakano
Kichijoji:Kichijoji
Tachikawa:Tachikawa
Others:Autre
Créez une zone de sélection à l'aide de la méthode pratique de enum_help.
app/views/datespots/_datespot_form.html.erb
<%= form_with model: @datespot, local: true do |f| %>
(réduction)
<div class = 'form-group'>
<%= f.label :place %> <span class="input-need">* Obligatoire</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 %>
Je fais des hachages japonais et anglais avec "Datespot.places_i18n.invert".
irb(main):001:0> Datespot.places_i18n.invert
=> {"Ginza"=>"Ginza", "Yurakucho"=>"Yurakucho", "Shimbashi"=>"Shinbashi", "Ville de Hamamatsu"=>"Hamamatsucho", "Tamachi"=>"Tamachi", "Shinjuku"=>"Shinjuku", "Yoyogi"=>"Yoyogi
", "Okubo"=>"Okubo", "Shibuya"=>"Shibuya", "Omotesando"=>"Omotesando", "Aoyama"=>"Aoyama", "Harajuku"=>"Harajuku", "Akasaka"=>"Akasaka", "Roppongi"=>"Roppongi", "chanvre
tissu"=>"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", "platine"=>"Shirogane", "Daikanyama"=>"Daikanyama", "Nakameguro"=>"Nakameguro", "Meguro"=>"Meguro", "Pont d'Iida"=>"Iidaba
shi", "Yotsuya"=>"Yotsuya", "Kagurazaka"=>"Kagurazaka", "Ueno"=>"Ueno", "Asakusa"=>"Asakusa", "Nakano"=>"Nakano", "Kichijoji"=>"Kichijoji", "Tachikawa"=>"Tachikawa",
"Autre"=>"Others"}
Contient la valeur sélectionnée dans "selected: f.object.place".
Un élément vide est ajouté au début avec "include_blank: true".
Vous avez maintenant la boîte de sélection suivante!
D'ailleurs, lors de la réception d'une valeur dans la vue, si vous ajoutez "_i18n", elle sera affichée en japonais.
app/views/datespots/_datespot.html.erb
(réduction)
<%= datespot.place_i18n %>