我正在尝试通过 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
。