0

我正在为带有 Ruby on Rails 3.1 应用程序的客户端制作一些可打印的表格,并且需要在每个页面上重复表格标题。不幸的是,目前,WebKit 浏览器不支持基于 CSS 的解决方案。

为了解决这个问题,我想我会使用 will_paginate gem。

控制器

def
  @books = current_library.books.order('books.title ASC')
end

当前查看代码

<% @books.each do |b| %>
<table>
  <thead><th><%= b.title %></th></thead>
  <tbody>  
  <% b.chapters.each do |chap| %
      <td><%= chap.number %> ... <%= chap.name %></td>
  <% end %>
  </tbody>
</table>
<% end %>

如何设置页面并逐步浏览每个页面?换句话说,如何在一个视图页面上获取分页的所有页面?

或者,我应该采用更好的方法吗?

4

1 回答 1

0

在这里使用可能会更好Enumerable#each_slice。它允许您将大型可枚举对象拆分为一系列较小的切片,然后在这些切片上进行迭代。这对这类事情非常好,不需要在循环中进行任何额外的数学运算,也不需要 gem。

这是一个页面上包含 10 个项目的集合的示例:

<% @books.each_slice(10) do |slice| %>
  <h1>Header Information</h1>
  <h2>Awesome</h2>

  <% slice.each do |book| %>
    <table>
      <thead><tr><th><%= book.title %></th></tr></thead>
      <tbody>  
      <% book.chapters.each do |chap| %
          <tr><td><%= chap.number %> ... <%= chap.name %></td></tr>
      <% end %>
      </tbody>
    </table>
  <% end %>

  <p>Some footer information</p>
<% end %>

这种方法只有在您假设每本书籍记录占用相同数量的空间时才有效(因此您最终不会得到过大或过小的页面),但这也是 will_paginate 的问题。

于 2013-05-29T20:36:06.013 回答