Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 排序轮询请求_Ruby On Rails_Ajax_Coffeescript_Railscasts_Ajax Polling - Fatal编程技术网

Ruby on rails 排序轮询请求

Ruby 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

我正试着按照rails第228集的内容进行投票以进行更改。我基本上是逐字逐句地关注屏幕广播,只是我用它来通知而不是评论。唯一的区别是,每次他使用“评论”这个词时,我都使用“用户通知”这个词。每次他用“评论”这个词,我就用“用户通知”。此外,在屏幕广播中,评论属于文章,而在我的应用程序中,用户通知属于用户,因此我将“文章”替换为“当前用户”。我能够成功地设置用户通知,只是最新的通知出现在底部。我通过在show.html.erb文件中添加一个.order来修复这个问题,请参见下面的。问题是,由于javascript告诉它轮询具有“id>params[:after]”的所有用户_通知,请参见下面控制器中的索引操作,因此它会使用更高的id重新追加用户_通知,因为顺序颠倒了。我该如何解决这个问题

这是我的密码:

用户_notifications.js.coffee

@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