0

我正在使用这个 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"}

萤火虫还说纬度 44.508851 和经度 33.600509 已成功发送。但在视图中我没有我的帖子数据,= params.inspect

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

如何在控制器中访问我的 jquery 发布数据?

*更新

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

视图中都为零:(

4

2 回答 2

0

这可能是 csrf 令牌的问题吗?您确定它与您的其余 POST 数据一起发送吗?

如果您使用的是 jquery-rails 插件,请务必获取最新版本,因为处理方式已经发生了一些变化。head如果您的文档中有令牌,该插件应自动将其注入每个 xhr POST 请求。查看github页面了解更多信息。

于 2011-05-20T09:50:38.053 回答
0

这将创建您必须创建的 xhr request.for

@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
 });
于 2011-05-20T09:15:43.650 回答