2011-06-27 212 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