Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在虾PDF表格中划过整行?_Ruby On Rails_Ruby_Ruby On Rails 3.1_Pdf Generation_Prawn - Fatal编程技术网

Ruby on rails 如何在虾PDF表格中划过整行?

Ruby on rails 如何在虾PDF表格中划过整行?,ruby-on-rails,ruby,ruby-on-rails-3.1,pdf-generation,prawn,Ruby On Rails,Ruby,Ruby On Rails 3.1,Pdf Generation,Prawn,我有一个对虾PDF,它打印了一张表中的门票列表: Prawn::Document.generate("doorlist.pdf") do table([["Ticket", "Name", "Product"]] + tickets.map do |ticket| [ make_cell(:content => ticket.number, :font => "Courier"), make_cell(:content => ticket.hol

我有一个对虾PDF,它打印了一张表中的门票列表:

Prawn::Document.generate("doorlist.pdf") do
  table([["Ticket", "Name", "Product"]] + tickets.map do |ticket|
    [
     make_cell(:content => ticket.number, :font => "Courier"),
     make_cell(:content => ticket.holder.full_name),
     make_cell(:content => ticket.product.name)
    ]
  end, :header => true)
end

我想划过车票用过的那一排?这是真的。我可以在Prawn文档中看到,我可以使用:inline_format选项删除每个单元格的文本以Document.generate并将文本包装在
“#{text}”
中,但是否可以删除整行内容?

我尝试了一下,这就是我最终得到的结果:

策略是为每行创建一个新表,并为列指定固定的宽度,以便垂直分隔符对齐。在绘制一个表(行)之后,我检查我的条件,如果为true,我将光标向上移动到单元格高度的一半,绘制线条,然后将其向下移动到原来的位置

require 'prawn'
tickets = [
  {:number => '123', :name => 'John', :product => 'Foo', :used => true },
  {:number => '124', :name => 'Bill', :product => 'Bar', :used => false},
  {:number => '125', :name => 'John', :product => 'Baz', :used => true}
]

Prawn::Document.generate("doorlist.pdf") do

  widths = [150,180,200]
  cell_height = 20

  table([["Ticket", "Name", "Product"]], :column_widths => widths)

  tickets.each do |ticket|

    table([[
      make_cell(:content => ticket[:number],  :height => cell_height, :font => "Courier"),
      make_cell(:content => ticket[:name],    :height => cell_height, :font => "Courier"),
      make_cell(:content => ticket[:product], :height => cell_height, :font => "Courier")
    ]], :column_widths => widths)

    if ticket[:used]
      move_up (cell_height/2)
      stroke_horizontal_rule
      move_down (cell_height/2)
    end

  end

end
idx=0
tableTest=pdf.make_表格(数据)
而idx‘FF0000’)
其他的
tableTest.cells[idx,2].style(:background_color=>'00FF22')
结束
idx+=1
结束
tableTest.draw
pdf.render_文件“example.pdf”

这很有效。您只需创建表格,然后迭代并在以后更改各个单元格。

嘿,看起来不错!一般来说,没有固定的列宽是很好的,但对于我正在做的事情来说,这很好。@synecdoche您可能只需要写出表格,确保使用固定高度的单元格,并将光标绝对移动到正确的位置,然后用每个_和_索引对数据进行第二次循环,并使用该索引计算光标向下移动的距离,但我不想对什么对您有用做太多假设。非常感谢@Unixmonkey对我帮助很大
idx = 0 

        tableTest = pdf.make_table(data)


        while idx <= totalRows
            if tableTest.cells[idx, 2].content == "No Go"
                tableTest.cells[idx, 2].style(:background_color => 'FF0000')
            else 
                tableTest.cells[idx, 2].style(:background_color => '00FF22')
            end 
            idx += 1 
        end 

        tableTest.draw

        pdf.render_file "example.pdf"