2011-04-06 58 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