2017-02-20 9 views
0

私のアプリを閲覧している「都市」に応じていくつかの結果を表示するアプリを開発しています。私はいくつかの結果を表示するためにのみ、この位置情報を使用します。私はthisを読んで、私のアプリに実装しました。 application.jsにブラウザで一度だけクッキーを読む

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

このコード:

私は部分的に私_headerにこのコードを入れ

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

と私のコントローラのindexアクションにこのコード:

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を作成して場所を探し、ロケーションデータを使ってページコンテンツを再ロードします(ajaxやsomethngを使用)
    • ユーザーがブラウザで自分のアプリケーションページを閉じるまでページが読み込まれるたびにCookieを読み込まない。

    ところで、私はjavascriptに慣れていませんが、処理しようとしています。

  • 答えて

    0

    おそらく、Cookieがすでに解釈されているという情報をCookie自体に追加してください。その後、この情報をチェックする条件をJavaScriptにもう1つ追加します。

    また、この情報をQueryString URLに入力してそこから読み取ることもできます。

    乾杯、

    関連する問題