我正在尝试跟踪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