使用 prawn 生成 PDF - 如何访问 Prawn.generate 中的变量?

发布于 2024-11-01 14:20:47 字数 304 浏览 2 评论 0原文

我正在尝试使用 Prawn 生成 pdf

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

,但这显然不起作用(仅当我使用类变量 @@buyer 时),我的问题是将变量传递给 Prawn::Document.generate 的正确方法是什么

(我知道解决这个问题的办法是 prawnto 但我正在尝试一点......而且它也是一个 sinatra 项目)

I'm trying to generate pdf using Prawn

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

but this obviously doesn't work (only if I use class variable @@buyer), my question is what is the proper way of passing variable to Prawn::Document.generate

(I know the solution to this is prawnto but I'm experimenting little bit ...and also it's a sinatra project)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

倒数 2024-11-08 14:20:48

来自 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 对象传递到块中。然后在当前对象内评估该块,以便您的实例变量仍在范围内。

From http://rdoc.info/github/sandal/prawn/master/Prawn/Document#generate-class_method it looks like if you pass a variable in to your block it will be then evaluated in the current context. So try:

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

Edit: To be more clear, this means that rather than the block being evaluated inside a new Prawn::Document object, the Prawn::Document object is instead passed into the block. The block is then evaluated within the current object so your instance variables are still in scope.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文