0

我正在编写一个简单的待办事项应用程序,它有项目并且项目有很多任务。我希望能够删除项目中的任务。但是当我尝试链接到删除方法时,我得到未定义的方法'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

路线.rb

 resources :projects do
    resources :tasks
  end

更新:所以我有删除工作。但是现在当我遍历每个任务时,有一个额外的删除链接,它路由到http://todoapp.dev/projects/9/tasks并给出 No route matches [DELETE] "/projects/9/tasks" 为什么是那里的额外删除链接?

 <% @project.tasks.each do |task| %>
    <%= task.name %> <%= link_to "delete", [@project, task], :method  => :delete %>
  <% end %>

在此处输入图像描述

在此处输入图像描述

4

2 回答 2

7

请试试这个:

<%= link_to "delete", [@project, task], :method  => :delete %>

让我知道

于 2013-04-26T12:31:02.757 回答
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>
于 2013-04-26T12:32:11.057 回答