订购轮询请求

时间:2013-12-12 19:29:15

标签: ruby-on-rails ajax coffeescript railscasts ajax-polling

我正在尝试跟踪rails casts第228集进行更改。我基本上是逐字逐句地关注截屏,除了我将它用于通知而不是评论。唯一的区别是,每次他使用“评论”这个词时,我都会使用“用户_通知”这个词。每次他使用“评论”这个词时,我都会使用' user_notifications'。另外,在截屏视频中的belongs_to文章,而在我的app app_notifications belongs_to用户,所以我替换了“' article'与' current_user'。我能够成功设置user_notifications,除了最新的通知显示在底部。我通过在show.html.erb文件中向user_notifications添加.order来修复此问题(见下文)。问题是,因为javascript告诉它使用' id>轮询所有user_notifications。 PARAMS [:后]' (请参阅下面控制器中的索引操作),它会重新附加具有更高ID的user_notifications,因为订单已被撤消。我该如何解决?

这是我的代码:

user_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 %>

index.js.erb的

$('#user_notifications').append("<%= j render(@user_notifications) %>");
UserNotificationPoller.poll()

user_notifications_controller:

def index
    @user_notifications = current_user.user_notifications.where('id > ?', params[:after].to_i)
end

0 个答案:

没有答案