2017-02-20 65 views
0

我正在开发一个应用程序,显示取决于用户正在浏览我的应用程序的“城市”的一些结果。我只会使用此位置信息来显示一些结果,仅此而已。我读this并实施到我的应用程序。仅在浏览器开启时读取一次cookie 1次

我把这个代码,我_header部分:

<%- unless @lat_lng %> 
    <script> 
    getGeoLocation(); 
    </script> 
<%- end %> 

这段代码的application.js:

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

与此代码,以我的控制器索引操作:

if cookies().key?("lat_lng") 
    lat_lng = cookies[:lat_lng].split("|") 

    geo_localization = "#{lat_lng[0]},#{lat_lng[1]}" 
    query = Geocoder.search(geo_localization).first 
    @city = query.state 

else 
    @city = "nocity" 
end 

但现在每次加载任何页面时,我都会再次读取cookie。我怎样才能:

  • 看如果cookie存在于第一页的负荷,
  • 如果存在,读取位置
  • 如果没有,没有加载位置信息的页面内容。
  • 用户允许位置请求后,创建cookie并找到位置,使用位置数据(使用ajax或somethng)重新加载页面内容
  • 使用相同的位置,直到用户在浏览器上关闭我的应用程序页面,每次加载页面时都不会读取cookie。

顺便说一下,我不熟悉JavaScript,但试图处理。

回答

0

您应该添加cookie已被解释为cookie本身的信息。再向JavaScript添加一个条件,以后检查此信息。

或者,您可以将此信息放入QueryString Url并从此处读取。

干杯,