Tengo una plantilla de ERB inline en código Ruby:Plantillas de Ruby: ¿cómo pasar variables a ERB en línea?
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
No puedo pasar la variable "actual" en la plantilla.
El error es:
(erb):1: undefined local variable or method `current' for main:Object (NameError)
¿Cómo puedo solucionar esto?
Esto no es necesario. En el código de su pregunta original, simplemente reemplace "result = template.result" por "result = template.result (binding)" que usará el contexto de cada bloque en lugar del contexto de nivel superior. – sciurus