Ruby on rails 是否将使用模型关联对gem进行分页

Ruby on rails 是否将使用模型关联对gem进行分页,ruby-on-rails,will-paginate,Ruby On Rails,Will Paginate,我正在使用will_paginate gem,并尝试使用模型关联来使用它。现在,我有组和帖子模型,每个组都有一个帖子列表。然而,当我尝试使用will_paginate链接这些模型时,它不起作用。然而,我用Group.find(15).posts.order('created_at DESC')在我的终端中测试了这一点,它可以正常工作。不确定我是否遗漏了什么,或者这是否与我如何处理偏音有关 Group show.html.erb <%= render "posts/index" %>

我正在使用will_paginate gem,并尝试使用模型关联来使用它。现在,我有组和帖子模型,每个组都有一个帖子列表。然而,当我尝试使用will_paginate链接这些模型时,它不起作用。然而,我用
Group.find(15).posts.order('created_at DESC')
在我的终端中测试了这一点,它可以正常工作。不确定我是否遗漏了什么,或者这是否与我如何处理偏音有关

Group show.html.erb

<%= render "posts/index" %> 
组控制器

def show
    @group = Group.find(params[:id])
    @posts = @group.posts.paginate(page: params[:page], per_page: 3).order('created_at DESC')
end

我还尝试了
@posts=Post.paginate(page:params[:page],per_page:3).order('created_at DESC')
,但似乎不起作用。我的帖子列表不是按降序排列的,也不是按三分组的。关于如何在使用多个模型时使用此gem的任何建议?

根据gem上的文档,paginate调用应该是
paginate(:page=>params[:page],:per_page=>10)
而不是
paginate(page:params[:page],per_page:3)
,就像您在代码中使用的那样

这就是你的问题所在。如果这不能解决问题,您也可以尝试:

def show
  @group = Group.find(params[:id])
  @posts = @group.posts.order('created_at DESC').paginate(:page => params[:page], :per_page => 3)
end

当我在应用程序中使用分页时,我要做的一件事是,只有在我获得查询结果后才进行分页。

因此,问题是您正确设置了
@posts
,但是您没有使用它,而是在
@group.posts
上迭代,在视图中:

# posts/_index.html.erb
<%= render 'posts/posts' %>
...
<%= will_paginate @posts %>

# posts/_posts.html.erb 
<% @group.posts.each do |post| %>
  <%= render 'posts/post', post: post, group: @group %>
<% end %>
#posts/_index.html.erb
...
#posts/_posts.html.erb
而是这样做:

# posts/_posts.html.erb 
<% @posts.each do |post| %>
  <%= render 'posts/post', post: post, group: @group %>
<% end %>
#posts/_posts.html.erb

请注意,
部分仅绘制导航控件。帖子列表来自于
渲染帖子/posts

仍然不走运。我不明白为什么它不能正常工作,在我的终端中执行
Group.find(15).posts.order('created_at DESC')
时也会这样做,例如,我可以查看您的视图代码吗?在你迭代
@posts
的地方,我更新了上面的原始帖子,添加了更多的代码。如果您需要其他信息,请告诉我。@ollaollu仅供参考“分页(:page=>params[:page],:per_page=>10)”与“分页(page:params[:page],per_page:10)”完全相同太棒了!这就成功了。现在,我在通过index.js.erb和scroll.js文件使我的连续滚动功能正常工作时遇到了问题。我使用了这些功能,但我正在使用模型关联将所有内容抽象为组。我不认为我可以帮助进行连续滚动,但如果你为它写一个新问题,我相信有人可以!谢谢我会试着解决一下,看看能不能解决。感谢您的帮助,也感谢ollaollu的建议!
$(document).ready(function() {
if ($('.pagination').length) {
$(window).scroll(function() {
  var url = $('.pagination .next_page').attr('href');
  if (url && $(window).scrollTop() > $(document).height() - $(window).height() - 50) {
    $('.pagination').text("Please Wait...");
    return $.getScript(url);
  }
 });
 return $(window).scroll();
}
});
def show
    @group = Group.find(params[:id])
    @posts = @group.posts.paginate(page: params[:page], per_page: 3).order('created_at DESC')
end
def show
  @group = Group.find(params[:id])
  @posts = @group.posts.order('created_at DESC').paginate(:page => params[:page], :per_page => 3)
end
# posts/_index.html.erb
<%= render 'posts/posts' %>
...
<%= will_paginate @posts %>

# posts/_posts.html.erb 
<% @group.posts.each do |post| %>
  <%= render 'posts/post', post: post, group: @group %>
<% end %>
# posts/_posts.html.erb 
<% @posts.each do |post| %>
  <%= render 'posts/post', post: post, group: @group %>
<% end %>