1

为什么以下代码为我产生不同的输出?

<% @comments.each do |comment| %>
  <%= comment.title %>
<% end %>

产生:

Title 1 title 2

<%= @comments.each { |comment| comment.title } %>

产生:

[#<Comment id: 1, commentable_id: 1, commentable_type: "Entry", title: "Title 1", body: "bla", subject: "", user_id: 1, parent_id: nil, lft: 1, rgt: 2, created_at: "2012-07-31 06:15:26", updated_at: "2012-07-31 06:15:26">, #<Comment id: 2, commentable_id: 1, commentable_type: "Entry", title: "tile 2", body: "one more comment", subject: "", user_id: 1, parent_id: nil, lft: 3, rgt: 4, created_at: "2012-08-01 06:58:57", updated_at: "2012-08-01 06:58:57">]
4

1 回答 1

4

这是因为<%= %>将打印出代码块返回的值。@comments在这种情况下,你有一个你正在调用的枚举。在这种情况下,该方法each将返回使用的可枚举@comments

如果你想打印出标题集合,你可以使用:

<%= @comments.map{ |comment| comment.title } %>

或更简洁地说

<%= @comments.map(&:title) %>
于 2012-08-06T14:45:53.630 回答