рельсы и JQuery пост - PullRequest
0 голосов
/ 20 мая 2011

я использую этот пост jquery

 navigator.geolocation.getCurrentPosition(function(position){
        $.post('/marketplace',{latitude: position.coords.latitude, longitude: position.coords.longitude})
      });

маршруты:

post '/marketplace' => 'pages#marketplace'

в контроллере Rails.logger.debug('Jquery.POST' + params.inspect) печать в консоли после

Started POST "/marketplace" for 127.0.0.1 at 2011-05-20 13:23:16 +0300
  Processing by PagesController#marketplace as 
  Parameters: {"latitude"=>"44.508851", "longitude"=>"33.600509"}
Jquery.POST{"latitude"=>"44.508851", "longitude"=>"33.600509", "controller"=>"pages", "action"=>"marketplace"}

Также Firebug говоритэта широта 44.508851 и долгота 33.600509 успешно отправлены.Но в моем представлении у меня нет моих данных поста, = params.inspect

{"action"=>"marketplace", "controller"=>"pages"}

Как получить доступ к моим данным поста jquery в контроллере?

* Обновление

@lat = request.params[:latitude]
@long = request.params[:longitude]

оба ноль в представлении: (

Ответы [ 2 ]

0 голосов
/ 20 мая 2011

Может ли это быть проблемой с токеном csrf?Вы уверены, что он отправляется вместе с остальными вашими данными POST?

Если вы используете плагин jquery-rails, обязательно скачайте последнюю версию, так как произошли некоторые изменения в том, как это происходитобрабатываются.Плагин должен автоматически вставлять его в каждый запрос xhr POST, если вы получили токен в head вашего документа.Посетите страницу github для получения дополнительной информации.

0 голосов
/ 20 мая 2011

Это создаст запрос xhr. Для этого вам нужно создать

@lat_long={:lat=>request.params[:latitude],:lng=>request.params[:longitude]}
render :text=> @lat_long and return false

используйте строку выше в вашем контроллере и в jquery

$.post('/marketplace',{latitude: position.coords.latitude, longitude: position.coords.longitude},function(data) {
   var lat=data.lat;
   var lng=data.lng
 });
...