编辑:忘记包含我的环境信息... Win7x64,RubyInstaller Ruby v1.9.1-p378
编辑 2:刚刚更新到 v1.9.1,补丁 429,仍然出现同样的错误。
编辑 3:在 Ruby v1.8.7 补丁 249 中运行相同的代码,工作正常。所以显然是 v1.9.1 打破了它。
我是使用 ERB 的新手,我能找到的样本是......嗯......不太有用......在 ERB 上玩了大约一个小时后,我得到了一些基本的例子(终于),但我有不知道为什么这不起作用...
require 'ostruct'
require 'erb'
data = {:bar => "bar"}
vars = OpenStruct.new(data)
template = "foo "
erb = ERB.new(template)
vars_binding = vars.send(:binding)
puts erb.result(vars_binding)
此代码产生以下错误:
irb(main):007:0> puts erb.result(vars_binding) NameError: main:Object 的未定义局部变量或方法“bar” 来自 (erb):1 来自 C:/Ruby/v1.9.1/lib/ruby/1.9.1/erb.rb:753:in `eval' 来自 C:/Ruby/v1.9.1/lib/ruby/1.9.1/erb.rb:753:in `result' 来自 (irb):7 来自 C:/Ruby/v1.9.1/bin/irb:12:in `'
为什么它在看main:Object
绑定?我告诉它通过传入来使用 OpenStruct 中的绑定vars_binding
有人可以告诉我为什么它不起作用,并帮助我让它起作用吗?