我曾经使用以下技术在任何地方使用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?
答案 0 :(得分:1)
经过一番研究后,我发现StackOverflow中的另一个问题解决了这个问题并提出了一个有效的修复方法: