** Si vous entrez le code postal sur l'écran d'enregistrement du nouvel utilisateur, les adresses suivantes (jusqu'à l'adresse) seront automatiquement entrées. ** **

・ Rubis: 2.5.7 Rails: 5.2.4 ・ Vagrant: 2.2.7 -VirtualBox: 6.1 ・ Système d'exploitation: macOS Catalina
Ce qui suit a été mis en œuvre.
・ Présentation mince ・ Introduction de Bootstrap 3
** ① Accédez au lien ci-dessous. ** **
** ② Cliquez sur "Cloner ou télécharger" **

** ③ Cliquez sur Télécharger ZIP **

** ④ Placez jquery.jpostal.js dans le dossier téléchargé dans ʻapp / assets / javascript`. ** **

Gemfile
gem 'jquery-rails'
gem 'jp_prefecture'
Terminal
$ bundle
application.js
//= require rails-ujs
//= require activestorage
//= require turbolinks 
//= require jquery //Décrit ci-dessous turbolinks
//= require_tree .
Terminal
$ rails g migration AddColumnsToUsers postcode:integer prefecture_code:integer address_city:string address_street:string address_building:string
~_add_columns_to_users.rb
class AddColumnsToUsers < ActiveRecord::Migration[5.2]
  def change
    add_column :users, :postcode, :integer
    add_column :users, :prefecture_code, :integer
    add_column :users, :address_city, :string
    add_column :users, :address_street, :string
    add_column :users, :address_building, :string
  end
end
Terminal
$ rails db:migrate
user.rb
include JpPrefecture
jp_prefecture :prefecture_code
def prefecture_name
  JpPrefecture::Prefecture.find(code: prefecture_code).try(:name)
end
def prefecture_name=(prefecture_name)
  self.prefecture_code = JpPrefecture::Prefecture.find(name: prefecture_name).code
end
python
include JpPrefecture
jp_prefecture :prefecture_code
➡︎ Conversion automatique du code de préfecture en nom de préfecture.
python
def prefecture_name
  JpPrefecture::Prefecture.find(code: prefecture_code).try(:name)
end
def prefecture_name=(prefecture_name)
  self.prefecture_code = JpPrefecture::Prefecture.find(name: prefecture_name).code
end
➡︎ Rendre possible la référence au nom de la préfecture avec ~ .prefecture_name.
Exemple) @ user.prefecture_name peut afficher l'adresse (préfecture) de l'utilisateur correspondant.
Ajoutez des informations d'adresse au paramètre fort.
application_controller.rb
def configure_permitted_parameters
  devise_parameter_sanitizer.permit(:sign_up, keys: [
    :email,
    :name,
    :postcode,
    :prefecture_name,
    :address_city,
    :address_street,
    :address_building
  ])
end
slim:registrations/new.html.slim
/Postscript
= f.label :postcode, 'Code postal'
br
= f.text_field :postcode, autocomplete: 'postcode', class: 'form-control'
br
= f.label :prefecture_name, 'Préfectures'
br
/Afficher 47 préfectures avec menu déroulant
= f.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name, { prompt: 'Veuillez sélectionner' }, class: 'form-control'
br
= f.label :address_city, 'Municipalité'
br
= f.text_field :address_city, autocomplete: 'address_city', class: 'form-control'
br
= f.label :address_street, 'adresse'
br
= f.text_field :address_stree, autocomplete: 'address_street', class: 'form-control'
br
= f.label :address_building, 'bâtiment'
br
= f.text_field :address_building, autocomplete: 'address_building', class: 'form-control'
br
Terminal
$ touch app/assets/javascripts/address_autofill.js
address_autofill.js
$(function() {
  return $('#user_postcode').jpostal({
    postcode: ['#user_postcode'],
    address: {
      '#user_prefecture_code': '%3',
      '#user_address_city': '%4',
      '#user_address_street': '%5%6%7',
    },
  });
});
Recommended Posts