簡體   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