我确信这是一个愚蠢的问题,但我有一个在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 %>
但当我看/任务时,我会得到:
Task 1, Task 2, Task 3
#<Task:0x103225138>#<Task:0x1031ea998>#<Task:0x1031ea858>
我不明白为什么
#<Task:0x103225138>#<Task:0x1031ea998>#<Task:0x1031ea858>"
正在出现或如何阻止它们出现。即使我没有打印循环代码以外的任何内容,它们也会出现。有什么想法吗?谢谢
<% @tasks.each do |t| %>
<%= t.title %>,
<% end %>
会解决的。问题是,您使用=
打印.each
的结果,该结果返回调用它的数组,在本例中为@tasks
。所以你的代码有效地做到了这一点:
<% @tasks.each do |t| %>
<%= t.title %>,
<% end %>
<%= @tasks %>
附带说明:
一个更好的方法是简单的
<%= @tasks.map(&:title).join ", " %>