我想要一个内容显示给第一次使用rails应用程序的访问者,所以我编写了一个帮助方法来检查会话并存储cookie。
我的控制器设置如下:
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
helper_method :first_time_visiting?
def first_time_visiting?
if session[:first_time].nil?
cookies.permanent[:first_time] = 1
end
end
end
class ItemsController < ApplicationController
before_action :first_time_visiting?
end
然后我在我的视图中调用这个方法:
<% if first_time_visiting? %>
<div class="new-visitor-show">Test</div>
<% end %>
第一次访问后我不应该看到“测试”,但我是。我是否错误地使用了辅助方法?
答案 0 :(得分:5)
你可以使用它(没有助手):
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :first_time_visit, unless: -> { cookies[:first_visit] }
def first_time_visit
cookies.permanent[:first_visit] = 1
@first_visit = true
end
end
函数first_time_visit
只会被调用一次,因此在视图中:
<% if @first_visit %>
<div class="new-visitor-show">Test</div>
<% end %>
答案 1 :(得分:0)
我认为您应该检查cookies
而不是session
。
def first_time_visiting?
if cookies[:first_time].nil?
cookies.permanent[:first_time] = true
true
else
false
end
end