Rails .map产生不需要的[“\ n”]

时间:2014-11-24 15:46:31

标签: html ruby-on-rails ruby-on-rails-4

我认为我有以下几行:

  <p><%= @runnings_past.map do |f| %>
      <%= f.title %>
  <% end %>
  </p>

在控制台中工作得很好 - &gt;输出:

2.1.2 :076 > @runnings_past.map do |f|
2.1.2 :077 >     f.title
2.1.2 :078?>   end
 => ["Murtenlauf"] 
2.1.2 :079 > 

但是当我在视图中使用它时,如上所示,我得到一个这样的表达式:

Murtenlauf ["\n"] 

[“\ n”]来自何处?

2 个答案:

答案 0 :(得分:2)

<%= @runnings_past.map do |f| %>
   <%= f.title %>
<% end %>

实际应该是

<% @runnings_past.each do |f| %>
   <%= f.title %>
<% end %>

请注意缺少=(此外,我将map更改为each,因为您只是遍历数组)

<%=表示评估代码并将结果插入到html结构中。所以你正在做的是评估.map并将结果放入你的html中。因此,您将遍历@runnings_past代码,将f.first放入html(这是您想要的),但是当您完成该操作后,您将放置映​​射的结果(显然之后是html中带有字符串返回字符的数组。

答案 1 :(得分:2)

您正在使用错误的迭代器。您想使用each代替map。 Map创建一个新数组,其中每个元素都是块中每次迭代的结果。虽然each只是为数组中的每个元素调用给定的块一次。

此外,正如@JTG所指出的,您要删除=。您只需要=来显示输出。你不需要逻辑。