如何使用 proc 将数据传递给 Prawn

How to pass data to Prawn using a proc

我正在尝试使用我的 Prawn 模板和另一个将创建 Prawn pdf 的 repo。

想象一下这样的事情:

# Repo A
require 'template_from_repo_b'
p = get_my_proc  # from repo b
Prawn::Document.new(&p).render

# Repo B
def get_my_proc
  proc do
    text 'hello world'
  end 
end

并且有效。但是我怎样才能将数据传递给那个过程。这可能吗?

我想知道是否有办法像 PHP 那样将代码加载到变量中。

# File to include
<?php
return 'abc';

# Usage
$abc = include 'include.php';

所以我可以将过程直接加载到变量中。我希望能够尽可能简化 proc 模板。

谢谢!

我找到了可能的解决方案。感觉有点奇怪,所以我不确定我是否要使用它。任何建议将不胜感激,我不是 ruby 专家。

require 'prawn'

def make_proc(data)
  proc do
    text data[:greet]
  end
end

data = { greet: 'Hello World' }
p = make_proc data
bytes = Prawn::Document.new(&p).render
open('test.pdf', 'wb') { |f| f.puts bytes }