我试图衡量在网页上花费的时间。我试图将开启和关闭时间存储在控制器的实例变量中;但是,他们要么没有初始化,要么没有。这是我的代码:
def table
@numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16]
if @time_opened.nil?
@time_opened = 1
@open_time = 0.0
@close_time = 0.0
else
@time_opened += 1
end
if @open_time > 0.0
@close_time = Time.now
end
@visit = Visit.new({number: @number, time_spent: @close_time - @open_time})
@visit.save
end
def show
url = request.url
@number = url[url.rindex('/')+1..-1]
@title = @number
@open_time = Time.now
end
每次显示我要测量的页面时,都会调用显示。当我检查访问数据时,数字为nil,time_spent为0.0。
答案 0 :(得分:7)
您无法使用实例变量在请求之间共享状态。您的控制器实例在每个请求结束时被完全销毁,并在下次将请求路由到其中一个操作时创建控制器的新实例。
如果要保留数据,则需要使用session
或将数据发送到客户端并通过<input type="hidden">
字段保留它,以便可以随后发送回请求。< / p>