Мне нужно создать массивы с разным количеством столбцов в зависимости от того, являются ли определенные значения переменных «Показать» или «Скрыть».
activity_types
имеет множество activities
activity_type
принадлежит пользователю
activities
будет иметь число columns: date, duration, cost, subject...
activity_types
имеет соответствующий столбец переключения для каждого столбца активности, например: subject_toggle
, `duration_toggle
эти столбцы-переключатели могут иметь значения только "Показать" или "Скрыть"
Поэтому я хочу создать серию таблиц в prawnpdf для всех различныхactivity_types.Каждая таблица должна иметь разные наборы столбцов, отображаемых в зависимости от того, является ли переменная activity_type
для этого столбца «show» или «hide»
Я начал работать над этим и быстро не знал, как он условно создает столбцыв массиве.Я мог бы оставить его пустым (иметь оператор if, который будет выводить пустым, если его «Скрыть»), но он не будет удалять столбец.
Ниже приведен мой код для создания таблиц для prawnpdf .
ActivityType.all.each do |type|
define_method("method_#{type.id}") do
move_down 20
font "Nunito"
text type.title, :align => :left, size: 13, style: :bold
move_down 5
table eval("rows_#{type.id}"), :position => :center, :width => 540, :column_widths => {0 => 50, 8 => 60},
:cell_style => {:font => "Nunito", :size => 10} do
row(0).font_style = :bold
columns(0..8).align = :center
self.row_colors = ["F0F0F0", "FFFFFF"]
self.header = true
end
end end
ActivityType.all.each do |type|
define_method("rows_#{type.id}") do
[["Date", "Subject", "Details", "Time (min)","Contact","Detail","Outcome","Agent",""]] +
type.activities.order(date: :asc).map do |activity|
[activity.date.strftime("%b %d"), activity.subject, activity.contact, activity.detail,
activity.outcome, activity.agent, activity.customer, activity.cost, activity.duration.to_i ]
end
end end