2017-02-20 59 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並從此處讀取。

乾杯,

相關問題