Every.iterator打印得比应有的要多,Ruby on rails 4

时间:2016-03-18 23:15:01

标签: ruby-on-rails each

我的html.erb文件中有这个:

Map

输出如下:

<%= @pg_search_documents.each do |result| %>
    <%= simple_format(result.content) %><br><br>
<% end %>

前两行按预期打印,但不知何故,除了内容之外,还有更多内容,即包含整个条目的列表。

如果我写这个:

nadja kuhn


Zwischen Nadja Dazwischen


[#<PgSearch::Document id: 17, content: "nadja kuhn", searchable_id: 122, searchable_type: "Event", created_at: "2016-03-18 22:45:02", updated_at: "2016-03-18 22:45:02">, #<PgSearch::Document id: 19, content: "Zwischen Nadja Dazwischen", searchable_id: 124, searchable_type: "Event", created_at: "2016-03-18 22:45:02", updated_at: "2016-03-18 22:45:02">] 

前两行按预期消失,但不知何故,仍然有这个列表:

<%= @pg_search_documents.each do |result| %>

如果我什么都不写,那么什么都没发生。我需要做什么,第二个列表没有打印出来?

1 个答案:

答案 0 :(得分:2)

那是因为你输出了迭代器的行:

<%= @pg_search_documents.each do |result| %>

注意额外的=,它实质上是在引擎盖下调用to_s。拿出来。

<% @pg_search_documents.each do |result| %>

有关<% ... %><%= ... %>之间的区别,请参阅this question