【发布时间】:2017-12-27 16:05:03
【问题描述】:
我发现了很棒的 gem will_paginate !但我面临使用问题。我正在构建一个组>帖子> cmets 应用程序,因此在我的组显示页面中,我正在显示帖子及其 cmets。为了限制查询的数量,我使用了这样的包含方法:
组控制器:
def show
@posts = @group.posts.order(upd_at: :desc).includes(:user).includes(comments: :user).paginate(page: params[:page], per_page: 10)
end
所以我也想对我的 cmets 进行分页。你知道怎么做吗?
我的代码: Group_show =
<h1>Groupe <%= @group.name %></h1>
<div class="post_list<%=@group.id%>">
<%= render @posts %>
</div>
<%= will_paginate @posts, renderer: BootstrapPagination::Rails %>
还有我的帖子/_post =
<% @comments = post.comments %>
<ul id="comment_list<%=post.id%>">
<%- if @comments.any? %>
<%= render @comments, post: post %>
<%= will_paginate @comments, renderer: BootstrapPagination::Rails %>
<% end %>
</ul>
顺便说一句,如果你有直接在 Groups_controller(show) 中定义 @cmets 的方法,它会非常有用;)
【问题讨论】:
-
我想知道将您的
post.comments限制为最近的 (3) 是否更有意义:post.comments.order(created_at: :desc).limit(3)。然后有一个按钮,向另一个端点执行 ajax 请求,如果用户需要,它将呈现剩余的请求......我认为这会更有效。 -
@BigRon,谢谢你的回答,我已经在我的模型评论中这样订购了。你能展示如何看起来像一个 ajax 请求来执行它吗?
-
试试
@posts = Post.where(group_id: @group.id).order(upd_at: desc).includes(:user, { comments: :user })
标签: ruby-on-rails ruby include will-paginate