我确定这是一个愚蠢的问题,但我有一个我在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>"
......正在出现或如何防止它们出现。即使我没有打印除循环代码之外的任何内容,它们也会出现。有任何想法吗?谢谢!
答案 0 :(得分:2)
<% @tasks.each do |t| %>
<%= t.title %>,
<% end %>
将解决这个问题。问题是您使用=
打印.each
的结果,该结果返回调用它的数组,在本例中为@tasks
。所以你的代码实际上是这样做的:
<% @tasks.each do |t| %>
<%= t.title %>,
<% end %>
<%= @tasks %>
旁注:
更好的方法就是
<%= @tasks.map(&:title).join ", " %>