Ruby on rails ERB在每个_行循环的末尾打印enitre字符串

Ruby on rails ERB在每个_行循环的末尾打印enitre字符串,ruby-on-rails,erb,Ruby On Rails,Erb,这完全让我困惑了一阵子。我尝试在erb中循环一行行文本时出现了奇怪的行为,当循环完成时,整行文本都会被打印出来 <% "some\nmultiline\ntext".each_line do |line| %> <%= line %> <br /> <% end %> 而且: <% "some\nmultiline\ntext".lines.each do |line| %> <%= line %> <br

这完全让我困惑了一阵子。我尝试在erb中循环一行行文本时出现了奇怪的行为,当循环完成时,整行文本都会被打印出来

<% "some\nmultiline\ntext".each_line do |line| %>
  <%= line %> <br />
<% end %>
而且:

<% "some\nmultiline\ntext".lines.each do |line| %>
  <%= line %> <br />
<% end %>
我肯定不是偶然地输入了一个
=
。是什么导致了这种奇怪的行为


我使用的是Rails 3.0.10和Ruby 1.9.2。

我不能肯定,但
是“一些\n多行\ntext”。行是
枚举器
是“一些\n多行\ntext”.lines.to_a
是可枚举的
最大的区别在于,当您将
可枚举的
模块混合到类中时,您必须定义每个方法,该方法的任务是
将项目一次一个地交给提供的代码块。枚举数是Ruby最近的重要补充。枚举数是一个对象,而不是一个方法。枚举数不是容器对象。它对于每个操作都没有“自然”的基础,就像数组那样(从元素0开始;产生它;转到元素1;产生它;依此类推)。必须明确指定每个枚举数的每次迭代逻辑。

来自基础扎实的Rubyist的文本块,第10章。
<% "some\nmultiline\ntext".lines.each do |line| %>
  <%= line %> <br />
<% end %>
<% "some\nmultiline\ntext".lines.to_a.each do |line| %>
  <%= line %> <br />
<% end %>
some 
multiline 
text