使用each_line的字符串迭代

时间:2010-09-02 02:44:13

标签: ruby-on-rails ruby

我有以下代码显示有序列表中的说明。当它在浏览器中呈现时,它会在一行中输出所有指令。难道我做错了什么?例如,请参见下面的输出。

代码:

 <% @recipe.instructions.each_line do |instruction| %>
  <li><%= instruction %></li>
<% end %>

输出:

<p>
  <b>Instructions:</b>
  <ol>
      <li>Roast garlic
</li>
      <li>test
</li>
      <li>eat icecream</li>
Roast garlic
test
eat icecream  </ol>
</p>

Rails 3 rc2 ruby​​ 1.9.2dev(2010-07-11修订版28618)

2 个答案:

答案 0 :(得分:5)

你确定你没有这样做吗?

<%= @recipe.instructions.each_line do |instruction| %>
  <li><%= instruction %></li>
<% end %>

注意循环开始时的extra =。由于each_line返回字符串,它将再次吐出字符串。

答案 1 :(得分:0)

所以我终于想通了。我更改了代码以使用Array#each并删除了块帮助程序中的等号。

最终代码:

<% @recipe.instructions.split(/\r\n/).each do |instruction| %>
  <li><%= instruction %></li>
<% end %>