我有一个内联到Ruby代码中的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
我无法将变量"current"传递到模板中。
错误信息如下:
(erb):1: undefined local variable or method `current' for main:Object (NameError)
我该怎么修复这个问题?
instance_eval
是最简单的解决方案。感谢指出这个问题。 - toklandnamespace.instance_eval { binding }
是什么意思? - Jwan622instance_eval
的作用,但我不知道在namespace
上下文中执行绑定是什么意思。从文档中得知:在接收者(obj)的上下文中评估包含Ruby源代码的字符串或给定的块。为了设置上下文,当代码执行时,变量self设置为obj,使代码可以访问obj的实例变量。
- Jwan622