使用each_line的字符串迭代
问题描述:
我有以下代码,它在有序列表中显示指令。当它在浏览器中呈现时,它会在一行中输出最后的所有指令。难道我做错了什么?例如,请参阅下面的输出。使用each_line的字符串迭代
代码:
<% @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红宝石1.9.2dev(2010-07-11修订28618)
答
你确定你不是在做这样的东西呢?
<%= @recipe.instructions.each_line do |instruction| %>
<li><%= instruction %></li>
<% end %>
注意循环开始处的extra =。由于each_line返回字符串,它会再次将字符串吐出。
答
所以我终于明白了这一点。我改变了代码使用Array#,并在块帮助器中删除了等号。
最终代码:
<% @recipe.instructions.split(/\r\n/).each do |instruction| %>
<li><%= instruction %></li>
<% end %>
你能分享及以上低于这个代码?我有一种感觉,可能会有一些临时调试代码潜伏... – Brian 2010-09-02 19:54:22
其实你可以看到所有的代码,这里是问题的页面http://github.com/quattro004/scratches/blob/master/app/views/食谱/ show.html.erb见第46 - 53行。 – Reese 2010-09-04 16:06:11