根据您的要求,我会说您实际上并不需要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。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)