如何遍历 collection,并将每个项目放在其自己的 Prawn 方格中?
How to iterate through a collection, and place each item in its own Prawn grid square?
我在 Rails 应用程序中使用 Prawn 生成平铺 objects 的 PDF - 类似于邮件合并标签的页面。
我已经在 pdf 文档中设置了一个网格,但我无法弄清楚如何使用我的 collection.
遍历该网格
我的 pdf class 看起来像这样。
class MyPdf < Prawn::Document
def initialize(vessels, view)
super(page_layout: :landscape)
@objects = objects
define_grid columns: 2, rows: 3, gutter: 10
build_page
end
def build_page
@objects.each do |object|
[0,1].each do |col|
[0,1,2].each do |row|
grid(row,col).bounding_box do
text object.name
end
end
end
end
end
end
此代码显然不起作用,并且没有将每个 object 放置在新的网格正方形中并根据需要创建新页面。
如何遍历我的 object 并将每个都放在自己的网格方块中?
(注意。我知道 prawn-labels gem,但它有一些限制,因此不适合我的需要。)
问题是您要为每个项目写入每个网格位置。
试试这个,每个对象应该只写一次,并在需要时创建一个新的页面 + 网格。
def build_page
define_grid columns: 2, rows: 3, gutter: 10
col = 0
row = 0
@objects.each do |object|
grid(row,col).bounding_box do
text object.name
if row == 2 && col == 1
start_new_page
define_grid columns: 2, rows: 3, gutter: 10
col = 0
row = 0
else
if col == 1
row += 1
col = 0
else
col += 1
end
end
end
end
end
我在 Rails 应用程序中使用 Prawn 生成平铺 objects 的 PDF - 类似于邮件合并标签的页面。
我已经在 pdf 文档中设置了一个网格,但我无法弄清楚如何使用我的 collection.
遍历该网格我的 pdf class 看起来像这样。
class MyPdf < Prawn::Document
def initialize(vessels, view)
super(page_layout: :landscape)
@objects = objects
define_grid columns: 2, rows: 3, gutter: 10
build_page
end
def build_page
@objects.each do |object|
[0,1].each do |col|
[0,1,2].each do |row|
grid(row,col).bounding_box do
text object.name
end
end
end
end
end
end
此代码显然不起作用,并且没有将每个 object 放置在新的网格正方形中并根据需要创建新页面。
如何遍历我的 object 并将每个都放在自己的网格方块中?
(注意。我知道 prawn-labels gem,但它有一些限制,因此不适合我的需要。)
问题是您要为每个项目写入每个网格位置。 试试这个,每个对象应该只写一次,并在需要时创建一个新的页面 + 网格。
def build_page
define_grid columns: 2, rows: 3, gutter: 10
col = 0
row = 0
@objects.each do |object|
grid(row,col).bounding_box do
text object.name
if row == 2 && col == 1
start_new_page
define_grid columns: 2, rows: 3, gutter: 10
col = 0
row = 0
else
if col == 1
row += 1
col = 0
else
col += 1
end
end
end
end
end