为第一次用户访问做一些事情,直到访问在 rails 结束
Do something for first user visit and till the time the visit ends in rails
我有一个 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
我在 application.html.erb 文件中使用 @first_visit 变量来检测这是否是用户的首次访问。问题是如果用户继续浏览不同的页面(在第一次访问时),通知就会消失,因为它不再是 "first_visit"。我想在 "first time visitor" 浏览我的应用程序之前显示通知。只有在用户关闭浏览器并返回后,此通知才不应再次出现(它不再是 first_visit 也不是正在进行的用户浏览会话)。
如何在 rails 中执行此操作?
所以,下面的代码对我有用。
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”,因此不会向用户显示任何通知。
希望这对寻找类似用例的人有所帮助!
我有一个 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
我在 application.html.erb 文件中使用 @first_visit 变量来检测这是否是用户的首次访问。问题是如果用户继续浏览不同的页面(在第一次访问时),通知就会消失,因为它不再是 "first_visit"。我想在 "first time visitor" 浏览我的应用程序之前显示通知。只有在用户关闭浏览器并返回后,此通知才不应再次出现(它不再是 first_visit 也不是正在进行的用户浏览会话)。
如何在 rails 中执行此操作?
所以,下面的代码对我有用。
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”,因此不会向用户显示任何通知。
希望这对寻找类似用例的人有所帮助!