我希望看到输出中出现“test”一词,并出现“hello”一词。
但令我感到困惑的是,如果我这样做,单词“test”会显示两次。
<div>
<h3>test</h3>
</div>
<% def helo %>
<% "hello" %>
<% end %>
<%= helo %>
我假设有一个简单的解释,这与erb的一些怪癖有关吗?
答案 0 :(得分:1)
我试过了:
require 'erb'
template = %q{
<div>
<h3>test</h3>
</div>
<% def helo %>
<% "hello" %>
<% end %>
<%= helo %>
}
t = ERB.new(template)
puts t.result
#(erb):6:in `helo': undefined local variable or method `_erbout' for main:Object (NameError) from (erb):10
所以你提到的似乎是正确的,但总的来说,你可以轻易地欺骗它:
require 'erb'
template = %q{
<div>
<h3>test</h3>
</div>
<% def helo
"hello"
end %>
<%= helo %>
}
message = ERB.new(template)
puts message.result
它对我有用。