2013-04-11 68 views
2

我是新来的生成PDF的虾,所以这可能是一个简单的问题,但它让我疯狂!如何在Prawn中格式化和设置子表格?

我有一个嵌套子表的表。我已经能够轻松地设置主表格的样式和格式,但是我似乎无法像嵌套子表格那样做。我真的需要做的是设置列宽并删除边框,但我似乎无法弄清楚。

下面的代码我到目前为止:

def line_items 
    data = line_item_rows 
    table(data) do 
     row(0).font_style = :bold 
     columns(0).width = 160 
     columns(1).width = 300 
     columns(2).align = :right 
     columns(2).valign = :bottom 
     row(0).columns(2).valign = :top 
     row(0).columns(2).align = :left 
     self.header = true 
    end 
    end 

    def line_item_rows 
    [["Description", "Items" ,"Price ex GST"]] + 
    @line_items.map do |item| 
     [item.description, sub_item_rows(item), price(item.charge_ex_gst)] 
    end + 
    [["","Total", price(@project.charge_ex_gst)]] 
    end 

    def sub_item_rows(item) 
    item.sub_items.map do |sub_item| 
     ["#{sub_item.quantity} x #{sub_item.name} #{price(sub_item.total_charge_ex_gst)}"] 
    end 
    end 

任何建议,我怎么将样式应用到子表? 在此先感谢您的帮助。

干杯,马克

回答

5

好的,这是它是如何修复的。我需要使用“make_table”并在其中应用格式设置,如下所示:

def line_items 
    move_down 15 
    data = line_item_rows 

     table(data) do 
      row(0).font_style = :bold 
      columns(0).width = 160 
      columns(1).width = 300 
      columns(2).align = :right 
      columns(2).valign = :bottom 
      row(0).columns(2).valign = :top 
      row(0).columns(2).align = :left 
      self.header = true 
     end  
    end 

    def line_item_rows 
    [["Description", "Items" ,"Price ex GST"]] + 
    @line_items.map do |item| 
     [item.description, 
     sub_items(item), 
     price(item.charge_ex_gst)] 
    end + 
    [["","Grand Total", price(@project.charge_ex_gst)]] 
    end 

    def sub_items(item) 
    sub_data = sub_item_rows(item) 
    make_table(sub_data) do 
     columns(0).width = 200 
     columns(1).width = 100 
     columns(1).align = :right 
     #columns(0).borders = [] 
    end 
    end 

    def sub_item_rows(item) 
    item.sub_items.map do |sub_item| 
     ["#{sub_item.quantity} x #{sub_item.name}", price(sub_item.total_charge_ex_gst)] 
    end + 
     [["","Total"]] 
    end 
+0

哇,谢谢先生分享它,真正的我需要的。真的和大虾一起上网并不是很严重,严重。 – ksugiarto 2013-08-27 06:18:38