我正在使用HTML 5地理位置代码(http://www.w3schools.com/html/html5_geolocation.asp)来获取用户位置。
...
function showPosition(position)
{
x.innerHTML="Latitude: " + position.coords.latitude +
"<br>Longitude: " + position.coords.longitude;
}
</script>
我想在ruby中创建一个包含position.coords.latitude和position.coords.longitude值的变量,是否有人知道捕获此信息并将其保存为ruby变量的最有效方法?
答案 0 :(得分:2)
有两种方法可以做到这一点 -
拨打电话
var latitude = position.coords.latitude;
var longitude = position.coords.latitude;
$.ajax({
url: "/<some_route>?latitude="+latitude+"&longitude="+longitude,
success: function(data) {
// do something here like for example replace some arbitrary container's html with the stuff returned by server.
$("#container").html(data);
}
});
使用params hash
在服务器端访问它latitude = params[:latitude]
longitude = params[:longitude]
在客户端设置位置cookie并在服务器端访问它。
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
document.cookie = "cl=" + latitude + "&" + longitude + ";";
在你的控制器中你可以访问它 -
current_location = cookies[:cl]
unless current_location.nil?
latitude = current_location.split('&')[0]
longitude = current_location.split('&')[1]
end
话虽如此,您应该更喜欢选项1,因为每次HTTP请求都会将cookie发送到服务器,此外您可能需要通知用户使用了跟踪技术。
答案 1 :(得分:1)
请求具有以下步骤:
如何在3
步骤2
中出现仅存在变量的问题,这是不可能的。
另一种方法是简单地添加ajax调用(即重复步骤1到3,而不是“浏览器”读取“Javascript代码”),将此信息发送到服务器以保存在数据库或其他内容中,但是仍然需要在javascript中编写你的逻辑。
答案 2 :(得分:0)
有谁知道捕获这些信息的最有效方法 并将其保存为ruby变量?
您对有效的衡量标准是什么?到达服务器时,数据不会丢失一个随机数字?
制作jQuery ajax请求是最简单的:
var lat = 10;
var lon = 20;
function onsuccess(data, textStatus, jqXHR) {
alert(textStatus);
}
$.post(
"http://localhost:3000/some/route",
{'lat': lat, 'lon': lon},
onsuccess //optional
);
纬度和经度可以在你的行动中从params散列中检索到:
lat = params[:lat]
lon = params[:lon]