Je découvre la gemme will_paginate ce qui est génial! Mais je suis confronté à un problème d'utilisation. Je suis en train de créer un groupe> post> commentaires, alors dans ma page de groupe, j'affiche des posts et leurs commentaires. Pour limiter le nombre de requêtes, je suis en utilisant la méthode comprend comme ceci:Will_paginate pour inclut des commentaires
Group_controller:
def show
@posts = @group.posts.order(upd_at: :desc).includes(:user).includes(comments: :user).paginate(page: params[:page], per_page: 10)
end
Je voudrais aussi paginera mes commentaires. Connaissez-vous un moyen de le faire?
Mon code: Group_show =
<h1>Groupe <%= @group.name %></h1>
<div class="post_list<%[email protected]%>">
<%= render @posts %>
</div>
<%= will_paginate @posts, renderer: BootstrapPagination::Rails %>
Et mes messages/_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>
En passant, si vous avez une méthode pour définir @comments directement dans le Groups_controller (spectacle), il peut être vraiment utile;)
Je me demande s'il est plus logique de limiter simplement votre 'post.comments' le plus récent (3):' post.comments.order (created_at:: desc) .limit (3) '. Puis avoir un bouton qui effectue une requête ajax à un autre point de terminaison qui rendra les demandes restantes si elles sont souhaitées par l'utilisateur ... Je pense que ce serait plus efficace. – BigRon
@BigRon, merci pour votre réponse, je commande déjà ceci comme ça dans mon commentaire de modèle. Pouvez-vous montrer comment peut ressembler à une requête ajax pour effectuer cela? –
Essayez '@posts = Post.where (group_id: @ group.id) .order (upd_at: desc) .include (: utilisateur, {commentaires:: user})' – Thanh