J'ai actuellement un modèle de commentaire qui affiche sous un micropost et les deux sont affichés sur la même page. Le problème est que les deux sont affichés sur la même page et les deux sont paginés et j'essaie d'aller à l'approche facebook de micropostage. Voici le problème ci-dessous:Problème avec les liens de page de will_paginate
Les liens pour les deux pagination se transforme en href="https://stackoverflow.com/users/2?page=2"
plutôt que href="https://stackoverflow.com/users/2/micropost?page=2"
ou href="https://stackoverflow.com/users/2/comment?page=2"
. Je ne sais pas comment résoudre ce problème. Voici une partie de mon code. Toutes les suggestions sont très appréciées!
Micropost rendu HTML
<table class="microposts">
<% if microposts.any? %>
<%= render microposts %>
<%= will_paginate microposts, :page_links => false %>
<% else %>
<div class="EmptyContainer"><span class='Empty'>Add a thread!</span></div>
<% end %>
</table>
Commentaire Section HTML
<div id='CommentContainer-<%= micropost.id%>' class='CommentContainer Condensed2'>
<div class='Comment'>
<%= render :partial => "comments/form", :locals => { :micropost => micropost } %>
</div>
<div id='comments'>
<% comments = micropost.comments.paginate(:per_page => 5, :page => params[:page]) %>
<%= render comments %>
<%= will_paginate comments, :class =>"pagination" %>
</div>
</div>
Contrôleur de l'utilisateur pour la page Afficher
def show
@user = User.find(params[:id])
@comment = Comment.find(params[:id])
@micropost = Micropost.new
@comment = Comment.new
@comment = @micropost.comments.build(params[:comment])
@comments = @micropost.comments.paginate(:page => params[:page], :per_page => 5)
@microposts = @user.microposts.order('created_at DESC').paginate(:per_page => 10, :page => params[:page])
respond_to do |format|
format.html
format.js
end
end
Je suppose que pour 'collection' je le remplace par tout ce qui doit être paginé? Parce que sinon je reçois une erreur non définie – Kellogs
aussi comment pourrais-je ajouter l'id de l'utilisateur dans le base_link_url? Parce que ces deux liens ne fonctionnent pas ': base_link_url =>"/users/<%= user.id%> ",' ': base_link_url =>"/users /: id ",' – Kellogs
Oui, remplacez 'collection' par toute autre variable contenant des éléments à être paginé. Pour ce qui est de l'utilisation de l'option: base_link_url - ne pas passer la chaîne avec des espaces réservés comme dans route.rb - il suffit de passer le résultat de la méthode url helper. Par exemple si vous avez une route nommée "user_micropost" qui est tranlée à (par exemple) '/ user/2/micropost' alors' user_micropost_path (: id => 2) 'serait l'option que vous devez passer comme': base_link_url '. Tous les liens rendus obtiendraient alors l'URL comme:/user/2/micropost? Page = 1/user/2/micropost? Page = 2 et ainsi de suite. – WTK