Rails will_paginate指向错误的twitter bootstrap nav-tab

时间:2015-01-18 19:42:28

标签: ruby-on-rails ruby-on-rails-4 twitter-bootstrap-3 will-paginate bootstrap-tabs

我的主页上有一个带有2个标签的导航标签(twitter-bootstrap)。 在每个标签下,我呈现不同的集合:

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)时,第一页显示正确,但我的网址仍然显示第一个标签的页面参数:

 http://localhost:3000/home/index?page=3 

当我尝试转到另一个页面时,它会将我引导到第一个选项卡的第一页(deleted_posts),并且页面参数将被添加到URL:

http://localhost:3000/home/index?page=3&pr_page=2

我该如何解决? 也许这实际上是一个问题:由于Twitter Bootstrap nav-tabs不会在网址中添加参数,我的应用程序如何知道用户在哪个标签中? 以及如何从错误的选项卡中删除页面参数到URL(因为它会将两个选项卡的页面参数添加到URL)?

1 个答案:

答案 0 :(得分:2)

在对:param_name功能的两次调用中指定will_paginate。仅在一次调用中指定: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" %>