ERB#result和ERB#run之间的区别

时间:2013-11-15 04:43:41

标签: ruby erb

这是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时,它不会输出%。

2 个答案:

答案 0 :(得分:2)

关于Q1,写puts renderer.resultrenderer.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%