加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 未读通知计数

发布时间:2020-12-17 02:54:23 所属栏目:百科 来源:网络整理
导读:我使用 public_activity gem为用户创建通知列表.使用 this post作为参考我试图保持用户未读取的通知的计数.当用户点击查看他们拥有的通知时,我希望计数返回到零.上面问题的解决方案是创建一个类方法,如下所示: def self.unreadwhere(:read = false)end 然后
我使用 public_activity gem为用户创建通知列表.使用 this post作为参考我试图保持用户未读取的通知的计数.当用户点击查看他们拥有的通知时,我希望计数返回到零.上面问题的解决方案是创建一个类方法,如下所示:

def self.unread
where(:read => false)
end

然后把它放在视图中:

user.notifications.unread.update_all(:read => true)

我的控制器看起来像这样:

def notifications
@activities = PublicActivity::Activity.order("created_at desc").where(recipient_id: current_user.id)
end

def self.unread
where(:read => false)
end

我的观点看起来像这样:

<% @activities.each do |activity| %>    
<%= render_activity activity %> 
<% end %>

我的问题是我在哪里添加:

.update_all(:read => true)

在视图中,我如何获得unread.count.

解决方法

这很容易.您只需进行控制器操作,并在用户查看其通知时通过ajax调用它.

对于示例的动摇,我们假设将如何使用此gem实现facebook通知.

我将添加2个控制器方法

def notifications
   @activities = PublicActivity::Activity.order("created_at desc").where(recipient_id: current_user.id)
   @notification_count = @activities.where(:read => false).count  
end

def read_all_notification
   PublicActivity::Activity.where(recipient_id: current_user.id).update_all(:read => true)
end

2条路线

get 'some_controller/notifications'
post 'some_controller/read_all_notification'

根据render_activity呈现的内容以及我们想要进一步挂钩此功能的位置,我们可以通过ajax调用相应的操作.假设,我想挂钩这个功能,其some_id为id.所以,我会这样做的

$(document).on 'click','#some_id',(e)->
    e.preventDefault()
    $.ajax '/some_controller/read_all_notification',type: "post"
        dataType: "json"
        beforeSend: (xhr) ->
          xhr.setRequestHeader "X-CSRF-Token",$("meta[name="csrf-token"]").attr("content")
        cache: false

那一切.

值得一提的是,render_activity也几乎没有其他选项,它提供了如何以及想要呈现的内容的完全灵活性.

阅读本https://github.com/pokonski/public_activity/blob/master/lib/public_activity/renderable.rb#L16-L143

此方法是render_activity方法的核心.

就这样.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读