2016-05-02 9 views
0

私の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にあります。
緯度と経度は、場所コントローラで許可されています。

誰に間違いがありますか?

+0

をDBへのあなたの住所を保存したい場合は、すべてのエラーを取得するのですか?また、あなたはid(#new_local)で何かを(おそらくあなたは送信ボタンを)参照しているように見えますが、テンプレートのボタンはid#submit_buttonを取得します。 – BoraMa

+0

new_localはフォームIDです – avest

+0

次に、ジオコーディングコードを 'submit'イベントに添付してください。あなたはフォームをクリックしないでください... – BoraMa

答えて

0

多分あなたはgeocomplete を試みるべきか、緯度/経度の使用のよう geocoder gem

geocoded_by :full_street_address # can also be an IP address after_validation :geocode # auto-fetch coordinates

+0

私はサーバーサイドジオコーディングに興味がありません – avest

関連する問題