README.md in jp_address-1.0.1 vs README.md in jp_address-1.0.2

- old
+ new

@@ -1,9 +1,9 @@ # Ruby on Rails 6 で 郵便番号住所検索 な gem ## JpAddressとは -日本郵便の「[郵便番号データ](https://www.post.japanpost.jp/zipcode/dl/oogaki-zip.html)」を Rails 6.1 で使用するための gem です。 +日本郵便の「[郵便番号データ](https://www.post.japanpost.jp/zipcode/dl/oogaki-zip.html)」を用いて、あなたの Rails 6.1 サイトに「郵便番号からの住所検索機能」を組み込むための gem です。 以下の機能を提供します。 * [[郵便番号データ](https://www.post.japanpost.jp/zipcode/dl/oogaki/zip/ken_all.zip "ken_all.zip")]をダウンロードして自前DBのテーブル(jp_address_zipcodes)にロードするクラスメソッド。(```JpAddress::Zipcode.load_master_data```) * 郵便番号を受け取り都道府県名と住所をJSONで返却するAPI。 (```jp_address/zipcodes#search```) @@ -34,17 +34,34 @@ # 本番環境 $ bundle exec rails runner -e production 'JpAddress::Zipcode.load_master_data' ``` -環境にもよりますが、1~3分ぐらいかかると思います。 +環境にもよりますが、5分ぐらいかかると思います。 -※ APP_ROOT/tmp/ を作業ディレクトリに使用しています。<br> -※ 最初にテーブルをトランケートしますので、毎回「全件insert」になります。 +APP_ROOT/tmp/ を作業ディレクトリに使用しています。<br> +最初にテーブルをトランケートしますので、毎回「全件insert」になります。<br> +同じ郵便番号を持つレコードは統合されます。<br> +<br> +例:9896712<br> +``` +"宮城県","大崎市","鳴子温泉水沼" +"宮城県","大崎市","鳴子温泉南山" +"宮城県","大崎市","鳴子温泉山際" +"宮城県","大崎市","鳴子温泉和田" +``` +これらは先頭から共通する地名を探し、うまく見つかれば +``` +"宮城県","大崎市","鳴子温泉" +``` +として1つのレコードにします。 +共通する地名が抜き出せない場合は空の町名にします。 + ### APIのマウント Railsアプリの config/routes.rb に追記。 +at: に渡す値は /jp_address でなくても /service や /api などでも構いません。 ```ruby mount JpAddress::Engine, at: "/jp_address" ``` ### APIの利用 @@ -66,19 +83,16 @@ 1. #zipcode (郵便番号を入力するテキストボックス) 2. #prefecture_id (いわゆる都道府県プルダウン) 3. #address (住所を表示するテキストボックス) の3要素があるとします。<br> -#zipcodeに入れられた値を keyup イベントで拾ってAPIを叩き、都道府県プルダウンを選択し、住所をセットするサンプルです。 +#zipcodeに入れられた値を keyup イベントで拾ってAPIを叩き、都道府県プルダウンを選択し、住所をセットするサンプルです。<br> +郵便番号の半角ハイフンは自動でカットされます。 都道府県プルダウンは、戻ってくるJSONの "prefecture" すなわち都道府県名で選択します。<br> ですので、お持ちの都道府県マスターの各レコードがどのようなIDを持っていても構いません。 -※ JQuery の存在を前提にしています。<br> -※ 郵便番号の半角ハイフンは自動でカットされます。<br> -※ もともと CoffeeScript で書いてあったソースを decaffeinate したものですので冗長です。本質的な処理はAddressSearch が担っているだけで、他の関数は decaffeinate に必要なだけです。 - #### フォーム ``` <form> <input type="text" name="zipcode" id="zipcode"> <select name="prefecture_id" id="prefecture_id"> @@ -133,10 +147,12 @@ <input type="text" name="address" id="address"> </form> ``` #### application.js など共通に読み込まれるファイルに配置するJavaScript - +※ JQuery の存在を前提にしています。<br> +※ もともと CoffeeScript で書いてあったソースを decaffeinate したものですので冗長です(汗)。<br> +本質的な処理はAddressSearch 関数が担っているだけで、他の関数は decaffeinate に必要なだけです。 ```js script function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); }