Передача Javascript контроллеру Rails по маркерам Google + POST + clickable - PullRequest
2 голосов
/ 25 ноября 2011

В своем приложении на Rails я использую API-интерфейс Google Maps , чтобы пользователи могли искать такие места, как:

Places autocomplete API + Javascript Map API

Код JavaScript ( Gist here ... ) возвращает хэш JSON и помещает новый маркер с выбором из выпадающего списка.У меня есть прослушиватель для маркера, который сейчас ничего не делает, что приводит к моему вопросу.

  1. Как мне сделать так, чтобы событие «click» для маркера передавало хеш результата (вв этом случае «место») в контроллер rails?
  2. В целом, как вообще передать данные JavaScript в контроллер Rails?

Я просмотрел другие ответы и не могу найти решение.Любая помощь будет принята с благодарностью.

Спасибо!

~ Dan B,

@ мыслиpunch

Ответы [ 2 ]

3 голосов
/ 25 ноября 2011

JQuery может сериализовать данные всеми методами, связанными с ajax;Вы можете использовать это для отправки необработанного JSON на сервер:

$.post("/foo", {place: {foo: "bar"}})

На вашем контроллере:

def action
  render :text => "Got: #{params[:place]}" # output: 'Got : {"foo":"bar"}'
end

Возможно, вы захотите либо публиковать поля только из тех мест, которые вам нужныо или используйте JSON.parse для десериализации строк json для манипулирования на стороне сервера.

2 голосов
/ 26 ноября 2011

Вы бы использовали jQuery, чтобы выполнить 'GET' и передать нужные параметры.Таким образом, основываясь на вашей сути, у вас есть адресная строка, которую вы построили.В вашем контроллере вы отправите ответ, который будет обработан в обратном вызове.Вы можете отправить обратно JSON и сделать что-нибудь с этой клиентской стороной или просто отправить обратно html для вставки.

google.maps.event.addListener(marker, 'click', function() {
  // maybe a loader here?
  // $('#reviews').html('loading reviews for ' + address + '...');
  $.get('/reviews', {address: address}, function(data) {
    $('#reviews').html(data);
  });
});

И эти данные могут быть любыми параметрами, которые вы хотите использовать в качестве параметра.Вы можете отправить все место, если хотите.'{place: place}'

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...