我想显示正在阅读帖子的人的列表。在尝试实现该功能之前,我想征求一些建议。我将首先检查在;中调用该show
操作的用户。PostsController
每当一个人查看一个帖子时,他都会被记录到正在阅读该帖子的人列表中。但是,当他离开阅读帖子时,我不确定如何从列表中删除该人。有没有办法使用或注意用户是否离开某个页面?一点帮助将帮助我立即开始!cookies
sessions
我很感激任何建议。谢谢!
我想显示正在阅读帖子的人的列表。在尝试实现该功能之前,我想征求一些建议。我将首先检查在;中调用该show
操作的用户。PostsController
每当一个人查看一个帖子时,他都会被记录到正在阅读该帖子的人列表中。但是,当他离开阅读帖子时,我不确定如何从列表中删除该人。有没有办法使用或注意用户是否离开某个页面?一点帮助将帮助我立即开始!cookies
sessions
我很感激任何建议。谢谢!
通常使用超时系统。
我们可以存储用户阅读帖子的日期,而不是存储布尔值“正在阅读帖子”。
不,您可以轻松设置超时(例如 5 分钟)以了解谁在阅读帖子。这是一个近似值,但这几乎是现实的。
好处 :
为了更准确
在路线.rb
post "/posts/:id/being_read" => "posts#being_read", :defaults => { :format => "json"}
在控制器中
PostsController < ApplicationController
def being_read
current_user && @post.being_read_by current_user
head :ok
end
end
在展示页面上
function beingRead(){
$.post("/posts/<%=@post.id%>/being_read", function(data) {
setTimeout(beingRead,10000);
});
}
在 post.rb 中
def being_read_by user=nil
# making use of rails low level cache
readers_ids = Rails.cache.fetch("Post #{id} being read", :expires_in => 5.minutes) || []
readers_ids = Rails.cache.fetch("Post #{id} being read", :expires_in => 5.minutes) (readers_ids << user.id) if user
readers_ids
end