Ce que j'ai fait la nuit dernière Parce que l'introduction du hachage actif a réussi Mémorandum
je veux dire J'étais impatient car je ne trouvais pas la description de la migration depuis la source principale ...
ruby 2.5 rails 5.2.4.3 devise 4.7.2 active_hash 3.1.0
zilkey/active_hash: collection_select
Je souhaite utiliser plusieurs endroits avec une seule application, comme la sélection de données pour les préfectures, Mais pas avant d'utiliser DB. Hum ... Je le recommande parfois. Peut-il être utilisé dans les catégories? ?? ↑ La catégorie était un joyau appelé ascendance. https://github.com/stefankroes/ancestry
gemme
Gemfile
gem 'active_hash'
L'habituel
bundle install
☓ rails g modèle Nom du modèle ← No. Cette fois, ce sont les données des préfectures
models/prefecture.rb
class Prefecture < ActiveHash::Base
self.data = [
{id: 1, name: 'Hokkaido'}, {id: 2, name: 'Préfecture d'Aomori'}, {id: 3, name: 'Préfecture d'Iwate'},
{id: 4, name: 'Préfecture de Miyagi'}, {id: 5, name: 'Akita'}, {id: 6, name: 'Préfecture de Yamagata'},
{id: 7, name: 'Préfecture de Fukushima'}, {id: 8, name: 'Préfecture d'Ibaraki'}, {id: 9, name: 'Préfecture de Tochigi'},
{id: 10, name: 'Préfecture de Gunma'}, {id: 11, name: 'Saitama'}, {id: 12, name: 'Préfecture de Chiba'},
{id: 13, name: 'Tokyo'}, {id: 14, name: 'Préfecture de Kanagawa'}, {id: 15, name: 'Préfecture de Niigata'},
{id: 16, name: 'Préfecture de Toyama'}, {id: 17, name: 'Préfecture d'Ishikawa'}, {id: 18, name: 'Préfecture de Fukui'},
{id: 19, name: 'Préfecture de Yamanashi'}, {id: 20, name: 'Préfecture de Nagano'}, {id: 21, name: 'Préfecture de Gifu'},
{id: 22, name: 'Préfecture de Shizuoka'}, {id: 23, name: 'Préfecture d'Aichi'}, {id: 24, name: 'Préfecture de Mie'},
{id: 25, name: 'Préfecture de Shiga'}, {id: 26, name: 'Kyoto'}, {id: 27, name: 'Préfecture d'Osaka'},
{id: 28, name: 'Préfecture de Hyogo'}, {id: 29, name: 'Préfecture de Nara'}, {id: 30, name: 'Préfecture de Wakayama'},
{id: 31, name: 'Préfecture de Tottori'}, {id: 32, name: 'Préfecture de Shimane'}, {id: 33, name: 'Préfecture d'Okayama'},
{id: 34, name: 'Préfecture d'Hiroshima'}, {id: 35, name: 'Préfecture de Yamaguchi'}, {id: 36, name: 'Préfecture de Tokushima'},
{id: 37, name: 'Préfecture de Kagawa'}, {id: 38, name: 'Préfecture d'Ehime'}, {id: 39, name: 'Préfecture de Kochi'},
{id: 40, name: 'Préfecture de Fukuoka'}, {id: 41, name: 'Préfecture de Saga'}, {id: 42, name: 'Préfecture de Nagasaki'},
{id: 43, name: 'Préfecture de Kumamoto'}, {id: 44, name: 'Préfecture d'Oita'}, {id: 45, name: 'Préfecture de Miyazaki'},
{id: 46, name: 'Préfecture de Kagoshima'}, {id: 47, name: 'Préfecture d'Okinawa'}
]
end
Ce modèle d'adresse de temps adresse d'association plusieurs ← → 1 préfecture
models/address.rb
extend ActiveHash::Associations::ActiveRecordExtensions
belongs_to :prefecture
Modifier le fichier migrationFile correspondant Cette fois
migrate/*****_create_addresses.rb
t.integer :prefecture_id, null: false, default: nil
null ~ est votre choix ♪ Après réécriture, les rails habituels db: migrate Réécrire également les paramètres forts ^^ Peut-être que registrations_controller.rb De: Seulement la partie préfecture. Je l'ai fait: prefecture_id.
registrations_controller.rb
protected
def address_params
params.require(:address).permit(:family_name_kanji,:first_name_kanji,:family_name_kana,:first_name_kana,:post_number,:prefecture_id,:city,:block_number,:apartment_name,:phone_number)
end
La classe était gênante.
= f.collection_select :prefecture_id,Prefecture.all,:id,:name,{prompt:"--"},{class:"inputDefault"}
C'est ↓.
<select class="inputDefault" name="address[prefecture_id]" id="address_prefecture_id"><option value="">--</option>
<option value="">--</option>
<option value="1">Hokkaido</option>
<option value="2">Préfecture d'Aomori</option>
<option value="3">Préfecture d'Iwate</option>
・ ・ ・ ・ ・ ・ ・
<option value="47">Préfecture de Fukuoka</option></select>
= f.collection_select :Nom de colonne,Données à enregistrer,Données à afficher,Premières données(sélectionné est aussi ici),Cette classe de temps
Peut-être que c'est fini. Je n'avais aucune idée de changer la colonne de migration de t.string: prefecture à ce qui précède, donc j'ai essayé de changer les données d'enregistrement de collection_select en: name ^^; Quelques heures TT en un rien de temps
Recommended Posts