2011-06-27 174 views
7

我正在寻找一种方法将选项传递给模板动作中的ERB模板引擎。将选项传递给模板函数

我偶然发现在正在使用这样的雷神模板操作,所述捆绑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类中设置模板中的变量。

我不知道如何绑定在Ruby中工作,也许有办法通过绑定到ERB传递一个范围。

+0

你在Thor文件中尝试过哪些代码不起作用? – Dogbert

+0

我没有复制上面的代码,它没有捕获通过的选项。 – devboy

回答

10

通过使用实例变量,它应该工作。

@name = name 
template("source","target") 

我的模板看起来是这样的:

<test><%= @name %></test> 

这对我的作品。我没有尝试传递具体的价值。

11

我无法找到任何文件,回答这个问题,而是通过捆扎机CLI的源读取,看来,如果你试图引用:AUTHOR_EMAIL参数在模板中,

Author email: <%= config[:author_email] %> 

作品。

+2

这也适用于我。传递给'template'的'opts'的散列在Erb模板中称为'config'。 – Kris