繁体   English   中英

如何使用Rails will_paginate gem划分一张大表以便在单个页面上打印

[英]How to Use Rails will_paginate gem to Divide a Large Table for Print on a Single Page

我正在使用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 %>

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

另外,我应该追求更好的方法吗?

您最好在此处使用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也将是一个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM