这是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.run
的输出为Today is Friday.%
。什么是最后的%。当我使用puts renderer.run
时,它不会输出%。
答案 0 :(得分:2)
关于Q1,写puts renderer.result
或renderer.run
之间没有区别。
更新:感谢@muistooshort指出run
的来源:
def run(b=new_toplevel)
print self.result(b)
end
如您所见,它只是打印result
的输出。
关于Q2,我认为%只表示新线。如果您将脚本更改为以下内容,则会消失。
renderer = ERB.new(simple_template)
puts renderer.result
renderer.run
puts ""
#>Today is Thursday.
#>Today is Thursday.
答案 1 :(得分:0)
renderer.run
打印结果意味着输出之后没有新的换行符由%
表示(我猜因为你使用的是zsh)。您可以得到相同的结果:
➜ puts 'a'; print 'a'
a
a%