Ошибка креветки: «данные должны быть двумерным массивом обнуляемых объектов» - PullRequest
0 голосов
/ 15 октября 2018

Я использую камень креветок для печати в формате pdf, поэтому я пытаюсь показать результат, хранящийся в таблице, но когда я пытаюсь распечатать записи внутри столбца, появляется следующее сообщение: Ошибка креветки «данные должны быть двумерным массивом объектов, которые можно обойти ».

это мой pdf-код:

    class Product < Prawn::Document
  def initialize(product)
    super(top_margin: 70)
    @product = product
    line_items
  end


  def item_header
    ["ID", "Item Name"]
  end

  def item_rows
    @product.to_a.each do |foo|
     [ foo.each do |label, value|
          value
          "," unless value == @product.last
        end]
    end
  end

  def item_table_data
    [item_header, *item_rows] 
  end

  def line_items
      table(item_table_data)
  end

end

, что возвращает мне @product - такой хеш, как этот

{"ID"=>"12", "Product" =>"AP", "box count"=> 10}

имя столбцов хеша, таких как «Продукт» или «количество ящиков», может меняться в зависимости от данных, выданных сохраненным

Что я могу сделать неправильно?

1 Ответ

0 голосов
/ 17 октября 2018

Мне не совсем понятно, как вы хотите, чтобы стол выглядел.Но если вы ищете таблицу, в которой есть строка для каждого значения продукта, это будет работать:

class Product < Prawn::Document
  def initialize(product)
    super(top_margin: 70)
    # @product = {"ID"=>"12", "Product" =>"AP", "box count"=> 10}
    @product = product
    # The prawn table method expects an array of arrays
    # this will give you a row in the table for each value in the product
    table @product.collect{ |label, value| [value]}
  end
end
...