2

这是erb3.rb

require 'erb'

weekday = Time.now.strftime('%A')
simple_template = "Today is <%= weekday %>."

renderer = ERB.new(simple_template)
puts renderer.result
renderer.run

当我运行它时,我得到以下信息。

➜ ruby erb3.rb
Today is Friday.
Today is Friday.%

Q1。我明白我不需要写puts renderer.run。但是还有更多的区别吗?

Q2。的输出put renderer.runToday is Friday.%。最后是什么%。当我使用时puts renderer.run,它不会输出 %.

4

2 回答 2

2

puts renderer.result关于 Q1,写或没有区别renderer.run。更新:感谢@muistooshort 指出以下来源run

def run(b=new_toplevel)
  print self.result(b)
end

如您所见,它只是打印result.


关于第二季度,我相信 % 只是表示一条新线。如果您将脚本更改为以下内容,它就会消失。

renderer = ERB.new(simple_template)
puts renderer.result
renderer.run
puts ""
#>Today is Thursday.
#>Today is Thursday.
于 2013-11-15T04:53:55.623 回答
0

renderer.run打印结果意味着在输出之后没有新的换行符%(我猜是因为您使用的是 zsh)。你可以得到同样的结果:

➜ puts 'a'; print 'a'
a
a%
于 2013-11-15T04:52:51.790 回答