我的主页上有一个导航选项卡(twitter-bootstrap),有2个选项卡。在每个选项卡下,我呈现一个不同的集合:
home_controller.rb:
def index
@deleted_posts = Post.all.where(status: "deleted").paginate(page: params[:page], per_page: 5)
@edited_posts = Post.all.where(status: "edited").paginate(page: params[:pr_page], per_page: 5)
end
index.html.erb:
<div class="tabbable">
<ul class="nav nav-pills">
<li class="active"><a href=<%="#tabDeleted"%> data-toggle="tab"><%= t "deleted" %></a></li>
<li><a href=<%= "#tabEdited" %> data-toggle="tab"><%= "edited" %></a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id=<%="tabDeleted" %>>
<%= render @deleted_posts %>
<%= will_paginate @deleted_posts, renderer: BootstrapPagination::Rails %>
</div>
<div class="tab-pane" id=<%="tabEdited" %>>
<%= render @edited_posts %>
<%= will_paginate @edited_posts, renderer: BootstrapPagination::Rails, :param_name => "pr_page" %>
</div>
</div>
</div>
分页在第一个选项卡 (deleted_posts) 中工作正常。
当我切换到第二个选项卡(edited_posts)时,第一页显示正确,尽管我的URL仍然显示第一个选项卡的页面参数:
http://localhost:3000/home/index?page=3
当我尝试转到另一个页面时,它会将我定向到第一个选项卡(deleted_posts)的第一页,并且页面参数刚刚添加到 URL 中:
http://localhost:3000/home/index?page=3&pr_page=2
我该如何解决?也许这实际上是一个问题:由于 Twitter Bootstrap 导航选项卡不会向 url 添加参数,我的应用程序如何知道用户在哪个选项卡中?以及如何从错误的选项卡删除页面参数到 url(因为按原样,它将两个选项卡的页面参数添加到 url)?
函数的两个调用will_paginate
:param_name
。仅在一个调用上指定:param_name
会使其将默认:page
参数添加到两个分页。
例如:
<%= will_paginate @deleted_posts, renderer: BootstrapPagination::Rails, :param_name => "deleted_posts" %>
<%= will_paginate @edited_posts, renderer: BootstrapPagination::Rails, :param_name => "edited_posts" %>