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");
}