我想显示正在阅读帖子的人员列表。
在尝试实现该功能之前,我想要求一些建议。我首先检查在show
中调用PostsController
操作的用户;每当一个人观看帖子时,他都会被记录在正在阅读帖子的人员名单上。但是,当他导航阅读帖子时,我不确定如何删除列表中的人。有没有办法使用cookies
或sessions
来注意用户是否导航离开某个页面?一点帮助可以帮助我马上开始!
我感谢任何建议。谢谢!
答案 0 :(得分:2)
通常,使用超时系统。
我们可以存储用户阅读帖子的日期,而不是存储布尔“正在阅读帖子”。
不,您可以轻松设置超时(例如5分钟)以了解谁正在阅读帖子。这是近似值,但这几乎是现实的。
优点:
答案 1 :(得分:2)
更准确
在routes.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