我有一个网站跟踪视频视图...每次调用控制器。人们可以用一些沉重的F5ing自己的视频观看。每个会话允许一个动作
如何使视图计数或方法每个会话只运行一次?
def show
new_views = @video.views + 1
@video.update_attributes(:views => new_views)
end
我有一个网站跟踪视频视图...每次调用控制器。人们可以用一些沉重的F5ing自己的视频观看。每个会话允许一个动作
如何使视图计数或方法每个会话只运行一次?
def show
new_views = @video.views + 1
@video.update_attributes(:views => new_views)
end
您可以创建一个会话变量,可能是在登录时,如:
session[:is_logged] = 1
然后,每次您要增加计数器时,只需检查此变量即可。
那么最简单的方法是将跟踪它在会议本身:
def show
if session[:has_counted_view] == nil
new_views = @video.views + 1
@video.update_attributes(:views => new_views)
session[:has_counted_view] = true
end
end
单个会话变量不起作用,因为您有很多视频,并且您希望为不同的视频分开计数。我认为更好的方法是将视图事件存储在数据库中。
回到这一点,实际上有分配一个数组以得到这工作包含每个视频ID。对于那些关心... – 2011-06-15 15:58:51