2017-11-18 14 views
0

私は各ページに通知を表示するレールアプリケーションを持っています。ユーザーが自分のアプリケーションを初めて訪れたときにのみ表示されます。このため私はクッキーを使用します。私は、これはユーザーの初めての訪問であるかどうかを検出するために私のapplication.html.erbファイルに@first_visit変数を使用初めての訪問のために何かを行い、訪問がレールで終わるまで

application_controller.rb

before_action :first_time_visit, unless: -> {cookies[:first_visit]} 
def first_time_visit 
cookies.permanent[:first_visit] = 1 
@first_visit = true 
end 

。問題は、ユーザーが(最初の訪問時に)別のページをブラウズし続けると、それはもはや「first_visit」ではないため通知が消えてしまうことです。 「初回訪問者」が自分のアプリケーションをブラウズしている時まで通知を表示したい。ユーザーがブラウザを閉じて戻った後で初めて、この通知は再び来るべきではありません(そのfirst_visitも進行中のユーザーブラウジングのセッションもなくなります)。

どのようにこれをレールで行うのですか?

答えて

0

したがって、次のコードが私に役立ちました。

if cookies[:first_visit] != "1" 
    cookies.permanent[:first_visit] = 1 
    cookies[:first_session] = 1 
    @first_visit = true 
    else 
    if !cookies[:first_session].blank? 
     @first_visit = true 
    else 
     @first_visit = false 
    end 
end 

基本的に、初めての訪問では、永続的なクッキーを作成しています。だから、これは私がブラウザを閉じた後も残っていますが、私は一時的なクッキーでブラウザが閉じられるとすぐに破棄される "first_session"という名前のクッキーを維持しています。だから、最初の訪問の最初のセッションが行われているまで、 "first_session"のクッキーが利用可能であるため、私は私の通知を表示することができます。 一方、ユーザーがbroserを閉じて後で戻ったとき、 "first_visit"という名前のクッキーはすでに "1"であり、ユーザーに通知は表示されません。

似たような用途を探している人に役立ちます。

関連する問題