Rails,js变量的全局存储

时间:2011-05-19 15:21:02

标签: javascript ruby-on-rails ruby-on-rails-3 google-maps geolocation

我通过navigator.geolocation获取用户位置。我需要的是在我的控制器中使用用户地理位置来按距离排序。如何从控制器获取navigator.geolocation?是否为每个用户提供了这种javascript对象的全局存储?

1 个答案:

答案 0 :(得分:3)

您应该通过POST / COOKIE从javascript向rails发送地理位置。

<强>的jQuery

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

<强>滑轨

# routes.rb
...
post '/set_geolocation' => 'users#set_geolocation'
... 


# users_controller.rb
class UsersController < ApplicationController
  def set_geolocation
    session[:location] = {:latitude=> params[:latitude], :longitude=> params[:longitude]}
  end
end

或者

<强>的jQuery

$(function(){ 
  navigator.geolocation.getCurrentPosition(function(pos){
    document.cookie = document.cookie + '; latitude=pos.coords.latitude; longitude=pos.coords.longitude'
  });      
});

<强>滑轨

#控制器中的某个地方   ...饼干[:纬度] ...