Создание PDF с помощью prawn - Как мне получить доступ к переменной в Prawn.generate? - PullRequest
6 голосов
/ 16 апреля 2011

Я пытаюсь сгенерировать pdf с использованием Prawn

@buyer = Buyer.last
Prawn::Document.generate("samle.pdf") do
  text "hello #{@buyer.name} world"
end

, но это, очевидно, не работает (только если я использую переменную класса @@ customer), мой вопрос заключается в том, как правильно передатьпеременная в Prawn :: Document.generate

(я знаю, что решение этой проблемы - prawnto, но я немного экспериментирую ... а также это проект sinatra)

1 Ответ

9 голосов
/ 16 апреля 2011

С http://rdoc.info/github/sandal/prawn/master/Prawn/Document#generate-class_method похоже, что если вы передадите переменную в свой блок, она будет затем оценена в текущем контексте.Поэтому попробуйте:

@buyer = Buyer.last
Prawn::Document.generate("samle.pdf") do |pdf|
  pdf.text "hello #{@buyer.name} world"
end

Редактировать: чтобы быть более понятным, это означает, что вместо того, чтобы оценивать блок внутри нового объекта Prawn :: Document, объект Prawn :: Document вместо этого передается в блок.Затем блок оценивается внутри текущего объекта, поэтому переменные вашего экземпляра все еще находятся в области видимости.

...