为什么这个rails视图在.each do循环结束时吐出一个原始数组?

时间:2011-01-12 04:14:23

标签: ruby-on-rails arrays views models

我在Rails视图中被这个奇怪的输出所困扰。这是我的模特:

class Comment < ActiveRecord::Base
  belongs_to :post
end

以下是我的观点的相关部分。我已经将问题隔离到这个代码块,特别是在最后一次迭代之后和循环结束之前发生的任何问题<% end %>。如果我注释掉每次迭代中打印的实际文本,原始数组仍会打印。

<h2>Comments</h2>
  <%= @post.comments.each do |comment| %>
    <p>
      <strong>Commenter:</strong>
      <%= comment.commenter %>
    </p>
    <p>
      <%= comment.body %>
    </p>
  <% end %> 

这是奇怪的输出(带样本 评论。):

  

评论者:Michael

     

好帖子。

     

评论者:Michael

     

好帖子。

     

评论者:Michael

     

测试。

     

评论者:约翰

     

阵列仍然有趣吗?

 [#<Comment id: 1, commenter:
 "Michael", body: "Good post.",
 post_id: 1, created_at: "2011-01-12
 03:51:20", updated_at: "2011-01-12
 03:51:20">, #<Comment id: 2,
 commenter: "Michael", body: "Good
 post.", post_id: 1, created_at:
 "2011-01-12 03:52:06", updated_at:
 "2011-01-12 03:52:06">, #<Comment id:
 3, commenter: "Michael", body:
 "Test.", post_id: 1, created_at:
 "2011-01-12 03:52:24", updated_at:
 "2011-01-12 03:52:24">, #<Comment id:
 4, commenter: "John", body: "Is the
 array still printing funny?", post_id:
 1, created_at: "2011-01-12 03:57:20",
 updated_at: "2011-01-12 03:57:20">]

最后,这是开发日志的阅读方式。他们都看起来像这样。

Started GET "/posts/1" for 127.0.0.1 at 2011-01-11 22:01:52 -0600
  Processing by PostsController#show as HTML
  Parameters: {"id"=>"1"}
  [1m[36mPost Load (0.1ms)[0m  [1mSELECT "posts".* FROM "posts" WHERE ("posts"."id" = 1) LIMIT 1[0m
  [1m[35mComment Load (0.3ms)[0m  SELECT "comments".* FROM "comments" WHERE ("comments".post_id = 1)
Rendered posts/show.html.erb within layouts/application (57.5ms)
Completed 200 OK in 73ms (Views: 61.1ms | ActiveRecord: 0.4ms)

有人知道造成这种情况的原因吗?如果这是PHP,我猜我在代码中的某处留下了print_r。但事实并非如此,我没有做那样的事情。

1 个答案:

答案 0 :(得分:24)

尝试删除<%= @post.comments.each do |comment| %>中的等号。仅当方法本身输出某些东西时才需要等于。在这种情况下,您只是使用它来迭代集合。