2011-04-06 91 views
1

我敢肯定这是一个愚蠢的问题,但我有一个我在Rails中构建的todo列表应用程序。有项目和项目有很多任务。除了看到他们的任务项目,我还想看到所有任务的简单列表。在任务控制器中的索引操作是这样的:迭代记录问题

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

并在意见/任务/ index.html.erb我只是有这样开始:

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

但是,当我看着/任务,我得到这个:

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

我想不通为什么

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

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

回答

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

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

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

一个侧面说明:

更加美好的方式来做到这简直是

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

最好的,固定它。谢谢! – msaunders 2011-04-06 23:07:45

+0

没问题,欢迎来到Stack Overflow。这里习惯上通过点击问题左侧的接受按钮和/或提升来指示正确的答案。 – 2011-04-06 23:10:25

+0

谢谢Jakub。我试过了,但它告诉我,我仍然需要等5分钟才能接受答案。你尽可能的是我的。 – msaunders 2011-04-06 23:15:39