2017-11-18 228 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”,因此没有向用户显示通知。

希望这可以帮助寻找类似用例的人!

相关问题