簡體   English   中英

使用模型關聯將will_paginate gem

[英]will_paginate gem using model associations

我正在使用will_paginate gem,並且嘗試通過模型關聯來利用它。 現在,我有“組”和“帖子”模型,其中每個組都有一個帖子列表。 但是,當我嘗試使用will_paginate鏈接這些模型時,它不起作用。 但是我在終端中使用Group.find(15).posts.order('created_at DESC')並且可以正常工作。 不知道我是否缺少某些東西,或者是否與我處理零件有關。

組show.html.erb

<%= render "posts/index" %> 

發布_index.html.erb

<%= render 'posts/posts' %>
...
<%= will_paginate @posts %>

發布_posts.html.erb

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

發布_post.html.erb

...
<%= post.caption %>

發布index.js.erb

$('#posts').append("<%= escape_javascript(render 'posts')%>");
$('.pagination').replaceWith('<%= escape_javascript will_paginate(@posts) %>');

scroll.js

$(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

我也嘗試了@posts = Post.paginate(page: params[:page], per_page: 3).order('created_at DESC')但它似乎不起作用。 我的帖子列表沒有降序排列,也沒有三列。 有關在使用多個模型時如何利用此gem的任何建議?

根據關於gem的文檔,分頁調用應為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/_posts.html.erb 
<% @posts.each do |post| %>
  <%= render 'posts/post', post: post, group: @group %>
<% end %>

請注意, <%= will_paginate @posts %>部分繪制導航控件。 帖子列表來自render posts/posts

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM