Prawn PDF и пустые ячейки базы данных? - PullRequest
1 голос
/ 03 августа 2010

Я использую Prawn PDF для создания файлов PDF на лету в моем приложении Rails.

Недавно я наткнулся на функцию rails cell.blank?, которая оказалась очень удобной, я могу скрыть любые <li> строки, которые я хочу, если нет ничего для отображения - что-то, о чем я давно задумывался!

Можно ли сделать то же самое в креветках? Скрыть строку, если она пуста?

На данный момент, если у меня есть следующее:

Contact Name
Address Line 1
Address Line 2
Address Line 3
Postcode
Phone Number
Fax Number

Если, например, пользователь вводит только имя контакта и почтовый индекс, то в адресной строке 1, 2 и 3 должны быть значительные пробелы.

Если бы я мог игнорировать эти строки, потому что они пусты, и отобразить их как:

Contact Name
Postcode

это приведет в порядок мой PDF-файл и избавит пользователя от необходимости использовать неправильное поле, чтобы адрес выглядел прямо в PDF-файле.

Вот как выглядит мой код Prawn:

pdf.text_box "Client", :size => 9, :at => [50,673]
    pdf.text_box "#{@kase.company.companyname}", :size => 9, :at => [100,673]
    pdf.text_box "#{@kase.company.companyaddressline1}", :size => 9, :at => [100,665]
    pdf.text_box "#{@kase.company.companyaddressline2}", :size => 9, :at => [100,655]
    pdf.text_box "#{@kase.company.companyaddressline3}", :size => 9, :at => [100,645]
    pdf.text_box "#{@kase.company.companyaddresscity}", :size => 9, :at => [100,635]
    pdf.text_box "#{@kase.company.companyaddresspostcode}", :size => 9, :at => [100,625]

Я искал сайт группы пользователей Google Prawn, но не могу найти то, что мне нужно.

Заранее спасибо!

Danny

Ответы [ 3 ]

1 голос
/ 04 августа 2010

pdf ограничивающая рамка (бессовестно выдернутая из документации по креветкам).

   pdf.bounding_box([100,400], :width => 400) do
     pdf.text("The height of this box is #{pdf.bounds.height}")
     pdf.text('this is some text')
     pdf.text('this is some more text')
     pdf.text('and finally a bit more')
     pdf.text("Now the height of this box is #{pdf.bounds.height}")
   end

можно легко модифицировать для печати, если атрибут доступен.

0 голосов
/ 03 августа 2010

Вы должны быть в состоянии использовать Ruby's 'empty?'метод, который доступен для большинства структур данных и строк, чтобы определить, имеет ли ваша строка или структура данных какой-либо контент.Что-то вроде (я не очень хорошо знаю креветку, но название этой компании выглядит так, будто это будет строка, поэтому я не думаю, что вам нужно ее разыграть):

pdf.text_box @kase.company.companyname, :size => 9, :at => [100,673] unless @kase.company.companyname.empty?

конечно, вы могли бысделайте это вспомогательным методом

def my_text_box (var, x, y)
  pdf.text_box var, :size => 9, :at => [x,y] if unless var.empty?
end

и вызовите в своем документе креветок

my_text_box @kase.company.companyname, 100, 673

упс, забыли добавить ссылку на пустое?http://apidock.com/ruby/String/empty%3F

0 голосов
/ 03 августа 2010

использовать счетчик для координаты y текущей адресной строки. Если вы добавляете строку, уменьшите ее на 10. Если ваша строка пуста, не добавляйте ее и не увеличивайте координату y.

y = 673
if @line1 then 
  pdf.text_box "#{@line1}", :size => 9, :at => [100,y]
  y+= 10
end 
if @line2 then 
  pdf.text_box "#{@line2}", :size => 9, :at => [100,y]
  y+= 10
end 

( подсказка : если это работает так, как вы хотите - преобразовать его в функцию, которая добавляет строку и увеличивает ваш счетчик)

...