我有一个来自外部库的字符串,如下所示:
s = " things.each do |thing|\n thing += 5\n thing.save\n end\n\n"
这个输入字符串不会改变。我需要使用 ERB 将其插入到文件中。例如:
erb = ERB.new("<%= s %>")
File.write("test.txt", erb.result(instance_eval('binding'))
我的问题是缩进。在不对字符串进行任何更改的情况下,文件将像这样编写:
things.each do |thing|
thing += 5
thing.run
end
注意缩进。然而,我想要做的是插入文本统一缩进另外两个空格,如下所示:
things.each do |thing|
thing += 5
thing.run
end
如果我这样做:
erb = ERB.new(" <%= s %>")
然后只有第一行会缩进。
things.each do |thing|
thing += 5
thing.run
end
我可以通过修改初始字符串来实现这一点..
erb = ERB.new("<%= s.gsub(/ (\w)/, " \\1") %>")
..但这感觉有点乱。我真的不想在视图中这样做。有没有办法在 ERB 中缩进整个字符串,还是我不走运?我想我可能是。