私は1つの形式で要求される2つのアドレスをジオコードしようとしています。ジオコード2住所ジオコーダーgem
<%= f.input :kotadres %>
<%= f.input :location %>
それらの両方が、このようにGoogleのオートコンプリートで動作:両方のアドレスがデータベースに格納されているため
<script>
var input = document.getElementById('student_location');
var autocomplete = new google.maps.places.Autocomplete(input,{componentRestrictions: {country:'be'}});
google.maps.event.addListener(autocomplete, 'place_changed', function(){
var place = autocomplete.getPlace();
})
</script>
<script>
var input = document.getElementById('student_kotadres');
var autocomplete = new google.maps.places.Autocomplete(input,{componentRestrictions: {country:'be'}});
google.maps.event.addListener(autocomplete, 'place_changed', function(){
var place = autocomplete.getPlace();
})
</script>
これは、完全に正常に動作します。
今、これらの2つのアドレスをデータベースにジオコードしたいとします。これは何らかの理由で何らかの理由でkotadresをa:latitudeと:longitudeの列に配置しているため、すでに50%で動作していますが、なぜこの属性のみをジオコードするのかわかりません。
これは私の学生のテーブルです:場所が、私はこれを行う方法を思っていた:私は、私は2つの新しい緯度と経度の値を格納するために2つの新しい列を作成する必要があります知っている
create_table "students", force: :cascade do |t|
t.string "location"
t.float "latitude"
t.float "longitude"
t.string "kotadres"
end
。
基本的には、:location属性ではなく:kotadres属性のみをジオコードする理由を理解したいと思います。フォームで
- 急がせるの両方の入力フィールド(結果:のみ:kotadresがジオコードます)
- 削除:入力フィールドをkotadres私は、次のことを試してみました(結果:場所は、ジオコーディングされません)
私の学生モデルは次のようになります。誰かがこれら2人の住所をジオコーディングする方法を知っているか、それは常にジオコーディング、なぜ誰かが知っていればのであれば
geocoded_by :location
after_validation :geocode, if: :location_changed?
geocoded_by :kotadres
after_validation :geocode, if: :kotadres_changed?
:kotadres属性、私は答えを知ることを喜んでより多くの。
あなたは真剣に別のアドレスモデルを使用して、多くの関係を1の設定を検討すべきです。現在の問題は、すべてを単一のモデルに詰め込んでいるという事実にも起因しています。 – max