【发布时间】:2019-06-27 14:54:22
【问题描述】:
我有以下代码:
require 'erb'
def body &block
content = block.call
content = block.call
content = block.call
content
end
x = 2
template = ERB.new <<-EOF
<% body do %>
2
<% end %>
EOF
template.run(binding)
当我执行它时输出2 2 2。为什么在 body 方法内每次调用 block.call 时都会连接块的内容?
为什么如果我使用以下模板就不会发生:
template = ERB.new <<-EOF
<%= body do
2
end %>
EOF
我无法理解这里发生的事情。我在使用 rails 时遇到了这个问题,但将代码隔离到纯 Ruby 中以尝试了解问题所在。
【问题讨论】:
标签: ruby-on-rails ruby erb