1

我通过navigator.geolocation获取用户位置。我需要的是在我的控制器中使用用户地理位置按距离排序。如何从控制器获取navigator.geolocation?是否有为每个用户的这种JavaScript对象的全球存储?Rails,js变量的全局存储

回答

3

您应该通过POST/COOKIE将javascript的地理位置发送给rails。

jQuery的

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

Rails的

# 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' 
    });  
}); 

Rails的

#某处控制器 ...饼干[:纬度] ...