绑定在1.9.2

时间:2011-10-21 05:20:21

标签: binding erb ruby-1.9.2

我曾经使用以下技术在任何地方使用ERB模板:

def create_from_template(file, template, vars)
  contents = File.read(template(template))
  struct = OpenStruct.new(vars)
  result = ERB.new(contents).result(struct.binding)
  File.open(file, 'w') { |f| f.write result }
end

我用以下方式使用它:

app = App.new(...)
create_from_template('new_file', 'template', { :app => app })

所以在我的模板中我可以:

<%= app.name %>

它会在REE 1.8.7中取代罚款,但在1.9.2中我得到以下错误:

 NameError:
   undefined local variable or method `app' for #<ERB:0x007ffe6b838468>

问题:如何使此代码符合1.9.2?

1 个答案:

答案 0 :(得分:1)

经过一番研究后,我发现StackOverflow中的另一个问题解决了这个问题并提出了一个有效的修复方法:

Problem using OpenStruct with ERB