Ruby on rails 排序轮询请求
我正试着按照rails第228集的内容进行投票以进行更改。我基本上是逐字逐句地关注屏幕广播,只是我用它来通知而不是评论。唯一的区别是,每次他使用“评论”这个词时,我都使用“用户通知”这个词。每次他用“评论”这个词,我就用“用户通知”。此外,在屏幕广播中,评论属于文章,而在我的应用程序中,用户通知属于用户,因此我将“文章”替换为“当前用户”。我能够成功地设置用户通知,只是最新的通知出现在底部。我通过在show.html.erb文件中添加一个.order来修复这个问题,请参见下面的。问题是,由于javascript告诉它轮询具有“id>params[:after]”的所有用户_通知,请参见下面控制器中的索引操作,因此它会使用更高的id重新追加用户_通知,因为顺序颠倒了。我该如何解决这个问题 这是我的密码: 用户_notifications.js.coffeeRuby on rails 排序轮询请求,ruby-on-rails,ajax,coffeescript,railscasts,ajax-polling,Ruby On Rails,Ajax,Coffeescript,Railscasts,Ajax Polling,我正试着按照rails第228集的内容进行投票以进行更改。我基本上是逐字逐句地关注屏幕广播,只是我用它来通知而不是评论。唯一的区别是,每次他使用“评论”这个词时,我都使用“用户通知”这个词。每次他用“评论”这个词,我就用“用户通知”。此外,在屏幕广播中,评论属于文章,而在我的应用程序中,用户通知属于用户,因此我将“文章”替换为“当前用户”。我能够成功地设置用户通知,只是最新的通知出现在底部。我通过在show.html.erb文件中添加一个.order来修复这个问题,请参见下面的。问题是,由于ja
@UserNotificationPoller =
poll: ->
setTimeout @request, 5000
request: ->
$.get($('#user_notifications').data('url'), after: $('.user_notification').last().data('id'))
jQuery ->
UserNotificationPoller.poll()
show.html.erb
<%= content_tag :div, id: "user_notifications", data: {url: user_notifications_url} do %>
<%= render current_user.user_notifications.order(created_at: :desc) %>
<% end %>
您可以只使用$user\u notifications.prepend;是否将较新的项目放在列表的顶部?而且,您需要使用first而不是last来提取数据“id”。谢谢,这很有效!我理解prepend的功能,但为什么我们需要将last更改为first?使用first可以从列表中的第一个项目中从上到下获取id,这样可以获取最近添加的项目的id,然后根据该id查询新项目。
$('#user_notifications').append("<%= j render(@user_notifications) %>");
UserNotificationPoller.poll()
def index
@user_notifications = current_user.user_notifications.where('id > ?', params[:after].to_i)
end