Mam szablon ERB inlined do kodu Ruby:Szablony Ruby: jak przekazywać zmienne do wbudowanego ERB?
require 'erb'
DATA = {
:a => "HELLO",
:b => "WORLD",
}
template = ERB.new <<-EOF
current key is: <%= current %>
current value is: <%= DATA[current] %>
EOF
DATA.keys.each do |current|
result = template.result
outputFile = File.new(current.to_s,File::CREAT|File::TRUNC|File::RDWR)
outputFile.write(result)
outputFile.close
end
nie mogę przekazać zmienna „prąd” w szablonie.
Błąd jest:
(erb):1: undefined local variable or method `current' for main:Object (NameError)
Jak mogę rozwiązać ten problem?
To jest niepotrzebne. W kodzie z oryginalnego pytania, po prostu zastąp "result = template.result" z "result = template.result (binding)", który użyje kontekstu każdego bloku, a nie kontekstu najwyższego poziomu. – sciurus