为什么以下代码会为我生成不同的输出?
<% @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">]
答案 0 :(得分:4)
这是因为<%= %>
将打印出代码块返回的值。在这种情况下,您有一个可以在其中调用的可枚举@comments
。方法each
将返回使用的枚举,在本例中为@comments
。
如果您想打印出标题集合,可以使用:
<%= @comments.map{ |comment| comment.title } %>
或更简洁
<%= @comments.map(&:title) %>