我使用 private_pub 作为实现通知系统的 gem,就像 Facebook 提供的那样。为此,我订阅了视图中的频道并从不同的地方(不同的控制器)发布。
发生的事情是,有时我会为单个订阅获得很多发布。你知道为什么会发生这种情况吗?
我的第一个怀疑是我可能多次调用我的 notify 方法(在某种循环或其他情况下,但我可以看到它只被调用一次,所以我猜问题一定是在 pub/sub 之间的某个地方层,很可能是因为我在通知视图时做错了什么。
接下来,我将介绍一些我的实现片段。
在我网站的 _header.html.erb 部分中,我订阅了用户的通知频道,如下所示:
例如,在我的friendships_controller 中,当添加朋友时,我会生成一些html 来呈现通知并发布带有前置通知的jquery,如下所示:
html_text = render_to_string(:partial => 'notifications/notification', :locals => { notification: notification }, :formats => [:html]).squish jquery = "$('#notifications_" + user.id.to_s + "').prepend('#{html_text}');" PrivatePub.publish_to("/notifications/" + user.id.to_s, jquery)
很抱歉发了这么长的帖子,希望你们中的一些人能帮助我。提前致谢。
顺便说一句,我正在运行带有 Ruby 2.0.0p247 的 Rails 4.0.0。