我正在寻找一种在thors模板操作中将选项传递给ERB模板引擎的方法。
我偶然发现了正在使用thors模板操作的bundler cli源:
opts = {:name => name,
:constant_name => constant_name,
:constant_array => constant_array,
:author_name => author_name,
:author_email => author_email
}
template(File.join("newgem/Gemfile.tt"),
File.join(target, "Gemfile"),
opts)
但是当我在我的Thor任务中添加这样的选项时,ERB找不到它们,我只能在我的thor类中使用参数和函数来设置模板中的变量。
我不知道ruby中的绑定是如何工作的,也许有办法通过绑定到ERB来传递范围。
答案 0 :(得分:13)
通过使用实例变量,它应该工作。
@name = name
template("source","target")
我的模板如下所示:
<test><%= @name %></test>
这对我有用。我没有尝试传递具体的值。
答案 1 :(得分:12)
我找不到任何文档来回答这个问题,但是通过Bundler CLI的来源阅读,看来如果你试图在模板中引用:author_email参数,
Author email: <%= config[:author_email] %>
作品。