为第一次用户访问做一些事情,直到访问结束于rails

时间:2017-11-18 11:26:35

标签: session ruby-on-rails-4 cookies session-cookies

我有一个rails应用程序,我在每个页面上显示一个通知,并且仅在用户第一次访问我的应用程序时显示。为此,我使用cookies。

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

我在application.html.erb文件中使用@first_visit变量来检测这是否是用户的第一次访问。问题是如果用户继续浏览不同的页面(在第一次访问中),通知就会消失,因为它不再是" first_visit"。我想显示通知,直到第一次访问者#34;正在浏览我的申请。只有在用户关闭浏览器并返回后,才会再次发出此通知(它不再是first_visit,也不是正在进行的用户浏览会话)。

我如何在rails中执行此操作?

1 个答案:

答案 0 :(得分: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可用,因此我能够显示我的通知。 另一方面,当用户关闭更加明亮的,并在稍后返回时,名为“first_visit”的cookie已经是“1”,因此没有向用户显示通知。

希望这有助于寻找类似用例的人!