Tag: binding

使用OpenBtruct和ERB时出现问题

编辑:忘了包含我的环境信息… 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> put erb.result(vars_binding) NameError:未定义的局部变量或main:Object的方法`bar’ 来自(erb):1 来自C:/Ruby/v1.9.1/lib/ruby/1.9.1/erb.rb:753:在’eval’中 来自C:/Ruby/v1.9.1/lib/ruby/1.9.1/erb.rb:753:在’结果’中 来自(irb):7 来自C:/Ruby/v1.9.1/bin/irb:12:in” 为什么看main:Object绑定? 我告诉它通过传入vars_binding来使用OpenStruct中的vars_binding 有人可以告诉我为什么它不起作用,并帮助我让它工作?