当在html.erb中使用每个字符串时,Rails会打印字符串

时间:2011-07-05 10:54:28

标签: ruby-on-rails string each erb

虽然当然可以通过将代码放入控制器或其他东西来整理,但我无法想象为什么会发生以下情况: 假设@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

我在这里做错了什么?

1 个答案:

答案 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| %>