如何在Rails 3中存储和处理网站用户的地理位置(经度和纬度),以便它检查是否在每个页面请求中我们已经在该用户的会话中保存了这些详细信息(如果我们正在不保存详细信息,那么我们应该从浏览器中请求用户的位置,然后将这些详细信息存储在会话中)?
根据您的要求,我会说您实际上并不需要ajax,因为大多数处理将使用JS(要求用户访问其位置,解析响应等)完成,因此我将使用JS设置一个cookie,然后Rails会看到)。
在您的控制器中
def action @lat_lng = cookies[:lat_lng].split("|") end
在您看来
<%- unless @lat_lng %> <script> getGeoLocation(); </script> <%- end %>
在您的一个javascript文件中
function getGeoLocation() { navigator.geolocation.getCurrentPosition(setGeoCookie); } function setGeoCookie(position) { var cookie_val = position.coords.latitude + "|" + position.coords.longitude; document.cookie = "lat_lng=" + escape(cookie_val); }
请注意,上述所有方法都不会测试用户是否具有支持地理位置的浏览器,或者用户是否已授予(或拒绝)使用其位置的权限,并且该cookie将是会话cookie,而JS不会请测试一下是否已设置Cookie。要在Cookie上设置更复杂的信息,请访问http://www.quirksmode.org/js/cookies.html。有关使用javascript的GeoLocation的更多信息,请参见http://diveintohtml5.info/geolocation.html。