Реализация геокодирования на стороне клиента до отправки формы не работает

В моем приложении Rails я хочу, чтобы пользователь ввел адрес в поле ввода, затем приложение должно геокодировать его и отправить параметры coordiates на сервер.

У меня есть скрытые поля для моей вычисленной широты и долготы. Я пытаюсь использовать JQuery так, чтобы когда пользователь отправляет форму, он предотвращает действие по умолчанию, делает логику геокодирования, заполняет скрытые поля ввода, а затем фактически отправляет форму.

Ну, проблема в том, что что-то не так с моим кодом javascript, потому что геокодирование не работает.

Вот мой код:

просмотры / locals / _form.формат html.Эрб

<%= 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 %>

assets / javascript / 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, включенный в приложение.формат html.Эрб.
Широта и долгота допускаются в местах контроллера.

Кто-нибудь видит, где ошибка?

1 ответ

  1. возможно, вам стоит попробовать geocomplete
    или если вы хотите сохранить адрес в БД, как lat/lon использовать
    геокодер gem

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