私のRailsアプリケーションでは、ユーザーが入力フィールドにアドレスを入力する必要があります。アプリケーションはそれをジオコードし、サーバー上でcoordiatesパラメーターを送信します。フォーム提出前のクライアントサイドジオコーディングの実装がうまくいきません
私は計算された緯度と経度のフィールドを隠しています。私はJQueryを使用して、ユーザーがフォームをサブミットしたときにデフォルトアクションを防止し、ロジックをジオコーディングし、隠された入力フィールドを埋めてフォームを実際に送信するようにしています。
ジオコーディングが機能しないため、JavaScriptのコードに問題があります。ここで
は私のコードです:
ビュー/地元の人々/ _form.html.erb
<%= form_for @local do |f| %>
<%= f.label :address %><br>
<%= f.text_field :address, placeholder: "City, State or Postal Code" %>
<%= f.hidden_field :latitude %>
<%= f.hidden_field :longitude %>
<%= f.submit "Add local!", id: "submit_button" %>
<% end %>
資産/ジャバスクリプト/ locals.js:
$(document).ready(function() {
$(function() {
$('#new_local').click(function(e){
e.preventDefault();
var address_to_geocode = document.getElementById('local_address').value();
var geocoder = new google.maps.Geocoder();
geocoder.geocode({address: address_to_geocode }, function(results, status) {
var coordinates = results[0].geometry.location;
$("#local_latitude").val(coordinates.lat());
$("#local_longitude").val(coordinates.lng());
});
$('#new_local').submit();
})
})
});
私はAPIキーが含まれていapplication.html.erbにあります。
緯度と経度は、場所コントローラで許可されています。
誰に間違いがありますか?
をDBへのあなたの住所を保存したい場合は、すべてのエラーを取得するのですか?また、あなたはid(#new_local)で何かを(おそらくあなたは送信ボタンを)参照しているように見えますが、テンプレートのボタンはid#submit_buttonを取得します。 – BoraMa
new_localはフォームIDです – avest
次に、ジオコーディングコードを 'submit'イベントに添付してください。あなたはフォームをクリックしないでください... – BoraMa