虽然当然可以通过将代码放入控制器或其他东西来整理,但我无法想象为什么会发生以下情况:
假设@some_table.some_text
包含5行。
将以下代码放在我的html.erb文件中:
<% @some_table.some_text.lines.each do |cur_line| %>
foo
<% end %>
导致5 foo
s后跟@some_table.some_text
中的所有行。
我可以想象在使用<%= %>
而不是<% %>
时会发生这种情况。
显然,我不希望显示@some_table.some_text
。
我在这里做错了什么?
答案 0 :(得分:1)
这就是Ruby lines
方法的工作方式 - 它返回一个Enumerable,它不能以相同的方式循环。为了您的目的,请尝试
<% @some_table.some_text.split(/\n/).each do |cur_line| %>
代替。
或者使用methods中的一个,在调用each
之前将Enemerable转换为数组,例如:
<% @some_table.some_text.lines.collect.each do |cur_line| %>