发出迭代记录

时间:2011-04-06 23:04:39

标签: ruby-on-rails ruby-on-rails-3

我确定这是一个愚蠢的问题,但我有一个我在Rails中构建的待办事项列表应用程序。有项目和项目有很多任务。除了看到项目的任务,我还想看到所有任务的简单列表。任务控制器中的索引操作如下所示:

def index
    @tasks = Task.all
    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @tasks }
    end
end

在views / tasks / index.html.erb中,我只想开始:

  <%= @tasks.each do |t| %>
    <%= t.title %>,
  <% end %>

但是当我看到/ tasks时,我明白了:

Task 1, Task 2, Task 3
#<Task:0x103225138>#<Task:0x1031ea998>#<Task:0x1031ea858>

我无法弄明白为什么

#<Task:0x103225138>#<Task:0x1031ea998>#<Task:0x1031ea858>"

......正在出现或如何防止它们出现。即使我没有打印除循环代码之外的任何内容,它们也会出现。有任何想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

<% @tasks.each do |t| %>
  <%= t.title %>,
<% end %>

将解决这个问题。问题是您使用=打印.each的结果,该结果返回调用它的数组,在本例中为@tasks。所以你的代码实际上是这样做的:

<% @tasks.each do |t| %>
  <%= t.title %>,
<% end %>
<%= @tasks %>

旁注:

更好的方法就是

<%= @tasks.map(&:title).join ", " %>