2017-11-18 208 views
0

我有一個rails應用程序,其中我在每個頁面上顯示通知,並且僅在用戶第一次訪問我的應用程序時顯示。爲此我使用cookie。爲第一次用戶訪問做些什麼,直到訪問時間結束爲止

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變量在我application.html.erb文件來檢測,如果這是用戶的第一次訪問。問題在於如果用戶繼續瀏覽不同的頁面(在第一次訪問中),則通知消失,因爲它不再是「first_visit」。我想顯示通知,直到「第一次訪問者」瀏覽我的應用程序。只有在用戶關閉瀏覽器並返回後,才能再次發送此通知(它不再是first_visit,也不是正在進行的用戶瀏覽會話)。

我該如何在rails中做到這一點?

回答

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 

基本上,關鍵是,在有史以來第一次訪問中,我創建了一個永久cookie。所以,即使在我關閉瀏覽器之後,這仍然會保持不變,而且我維護一個名爲「first_session」的cookie,它是一個臨時cookie,一旦瀏覽器關閉,就會被銷燬。因此,直到第一次第一次訪問時,「first_session」cookie纔可用,因此我能夠顯示我的通知。 另一方面,當用戶關閉了broser並稍後回來時,名爲「first_visit」的cookie已經是「1」,因此沒有向用戶顯示通知。

希望這可以幫助尋找類似用例的人!

相關問題