2013-10-30 48 views
1

我有一个简单的Rails应用程序,geolocates抵达时的用户到该网站(该代码位于我application.html.erb文件的头标记):运行JavaScript和控制器操作页面之前呈现

<script> 
    var x=document.getElementById("demo"); 
    function getLocation() 
    { 
    if (navigator.geolocation) 
     { 
     navigator.geolocation.getCurrentPosition(showPosition); 
     } 
    else{x.innerHTML="Geolocation is not supported by this browser.";} 
    } 
    function showPosition(position) 
    { 
    var lat = position.coords.latitude; 
    var log = position.coords.longitude; 
    document.cookie = "cl=" + lat + "&" + log + ";"; 
    } 
    getLocation() 
</script> 
<p id="demo"></p> 

坐标被保存为cookie。根据这些坐标,它们用于从控制器中的数据库中检索特定的一组数据。这些结果然后显示在视图中。

当前用户第一次到达该站点时页面为空白,当页面刷新时,位置信息通过控制器并显示相应的数据。

我想要做的是在初始页面加载时完成地理位置和控制器操作,因此数据会在用户第一次到达站点时显示。或者更简单地说:

  1. 获取用户所在位置的坐标
  2. 通行证坐标控制器和检索数据
  3. 然后在视图

我想显示的数据我的问题的根源是订货的JavaScript和控制器事件,但我不知道如何解决这个问题。

回答

1

由于JavaScript在浏览器中运行,并且页面呈现在服务器端,因此您需要重新加载整个页面或在showPosition中执行一些AJAX更新。否则,坐标将始终落后一步:如果移动到另一个位置,cookie中的坐标将来自最后一个位置,而不是当前位置。

相关问题