2011-06-27 10 views
7

Poszukuję sposobu przekazania opcji do mechanizmu szablonowego ERB w akcji szablonu.Przekazywanie opcji do funkcji szablonu w thor

natknąłem się na źródła cli Bundler gdzie akcja THORS szablon jest używany tak:

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) 

Ale kiedy dodać opcje jak to w moich zadań Thor nie są one uznane przez ERB, można używać tylko argumenty i funkcje w mojej klasie thor do ustawiania zmiennych w szablonie.

Nie mam pojęcia, jak działa wiązanie ruby, może istnieje sposób na przekazanie zakresu poprzez powiązanie z ERB.

+0

Który kod próbowałeś w pliku Thor, który nie działał? – Dogbert

+0

Skopiowałem powyższy kod i nie przechwyciłem przekazanych opcji. – devboy

Odpowiedz

10

Używając zmiennych instancji, powinno działać.

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

Mój szablon wygląda tak:

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

Działa to dla mnie. Nie próbowałem przekazywać konkretnych wartości.

11

nie mogę znaleźć żadnej dokumentacji, aby odpowiedzieć na to pytanie, ale czytając źródła Bundler CLI wydaje się, że jeśli staraliśmy się odwołać: author_email parametru wewnątrz szablonu,

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

prace .

+2

Ta praca również dla mnie. Mieszanie 'opts' przekazane do' szablonu' nazywa się 'config' w szablonie Erb. – Kris