我目前有一个评论模型,微博下发布,并且都显示在同一页上。问题是,两者都显示在同一页面上,两者都分页,我试图去Facebook的方法microposting。下面是问题:问题与will_paginate页面链接
这两个分页的链接变成这个href="https://stackoverflow.com/users/2?page=2"
而不是href="https://stackoverflow.com/users/2/micropost?page=2"
或href="https://stackoverflow.com/users/2/comment?page=2"
。我不确定如何去解决这个问题。这里是我的一些代码。所有建议都非常感谢!
渲染微柱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>
注释部分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>
用户控制器的显示页面
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
我假设'集合'我替换为任何需要分页?因为如果没有我得到一个未定义的错误 – Kellogs 2012-03-07 00:44:19
也如何将用户的ID添加到base_link_url?因为这两个链接不起作用::base_link_url =>“/ users/<%= user.id%>”,'':base_link_url =>“/ users /:id”,' – Kellogs 2012-03-07 00:53:14
是的,用任何其他变量存储项代替'collection'分页。至于使用:base_link_url选项 - 不要传递字符串与一些占位符,就像你在routes.rb中 - 只是传递url helper方法的结果。例如,如果你有一个命名的路由“user_micropost”被转换为(例如)'/ user/2/micropost',那么'user_micropost_path(:id => 2)'是你需要传递的选项:'base_link_url '。所有呈现的链接都会得到url:/ user/2/micropost?page = 1/user/2/micropost?page = 2等等。 – WTK 2012-03-07 06:58:23