我正在编写一个简单的待办事项应用程序,其项目和项目有很多任务。我希望能够删除项目中的任务。但是当我尝试link_to一个删除方法时,我得到了未定义的方法'task_path'。
查看代码
<ul>
<% @project.tasks.each do |task| %>
<li><%= task.name %></li> <%= link_to "delete", task, :method => :delete %></br>
<% end %>
</ul>
任务控制器
def destroy
@project = Project.find(params[:project_id])
@task = @project.tasks.find(params[:id])
@task.destroy
redirect_to @project, :notice => "Task Deleted"
end
的routes.rb
resources :projects do
resources :tasks
end
更新: 所以我删除了工作。但现在当我迭代完成每个任务时,会有一个额外的删除链接,它会路由到http://todoapp.dev/projects/9/tasks并给出无路由匹配[DELETE]“/ projects / 9 / tasks”为什么还有额外的删除链接?< / p>
<% @project.tasks.each do |task| %>
<%= task.name %> <%= link_to "delete", [@project, task], :method => :delete %>
<% end %>
答案 0 :(得分:7)
请试试这个:
<%= link_to "delete", [@project, task], :method => :delete %>
让我知道
答案 1 :(得分:0)
运行rake routes
您将看到删除映射到project_task。
您可以使用
<ul>
<% @project.tasks.each do |task| %>
<li><%= task.name %></li> <%= link_to "delete", project_task_path(@project, task), :method => :delete %></br>
<% end %>
</ul>