我正在使用 AJAX 对评论进行分页,但它加载的是重复项,而不是新页面



我正在尝试通过 AJAX 和will_paginate gem 在博客文章中对评论进行分页来加载评论。

我面临的问题是,它不是将该帖子的评论总数细分到不同的页面,它只是加载初始渲染或"第一页评论"的重复评论。

应用.js:

// LOAD MORE POSTS (BLOG INDEX)
$( document ).ready(function() {
  if ($('#paginate-load-more-button').size() > 0) {
    $('#paginate-load-more-button .pagination').hide()
    $('#load-more-posts').show().click(function() {
      more_posts_url = $('#paginate-load-more-button .pagination .next_page a').attr('href');
      $this = $(this);
      $this.html('<img src="images/ajax-loader.gif" alt="" title=" Loading..." /> ').addClass('disabled');
      $.getScript(more_posts_url, function() {
        if ($this) {
          $this.text('Load more posts').removeClass('disabled');
        }
      });
    });
  };
});

帖子>显示.js.erb:

$('#listing-load-more-button').append("<%= j render(partial: 'comments/comment', collection: @post.comments) %>");
<% if @comments.next_page %>
  $('#paginate-load-more-button .pagination').replaceWith('<%= j will_paginate @comments %>');
  $('#paginate-load-more-button .pagination').hide();
<% else %>
  $('#paginate-load-more-button .pagination, #load-more-posts').remove();
<% end %>

正在呈现的部分'comments/comment'只是带有回复表单的每个单独注释条目。

帖子>显示.html.erb:

<div id="listing-load-more-button">
  <%= render(partial: 'comments/comment', collection: @post.comments) %>
</div>
<div id="paginate-load-more-button">
  <%= will_paginate @comments %>
</div>
<% if @comments.next_page %>
  <div class="center"><a href="javascript:void(0);" id="load-more-posts" class="btn btn-info top-drop">Load Comments</a></div>
<% end %>

帖子控制器:

def show
  ...
  @comments = Comment.paginate(page: params[:page], per_page: 3).order('created_at DESC')
  respond_to do |format|
    format.html
    format.js
  end
end

我也尝试使用@comments = @post.comments.paginate(page: params[:page], per_page: 3).order('created_at DESC'),因为我从这个问题/答案中学到了这一点,但它似乎仍然无法正常工作。

谢谢你的帮助!

您正在渲染collection: @post.comments(这不是分页关系(,您应该渲染collection: @comments

最新更新