[英]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.