[英]Rails delete link nested routes
我正在编写一个简单的待办应用程序,其中包含项目,并且项目有很多任务。 我希望能够删除项目中的任务。 但是,当我尝试将link_to到delete方法时,会得到未定义的方法'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”为什么那里的多余删除链接?
<% @project.tasks.each do |task| %>
<%= task.name %> <%= link_to "delete", [@project, task], :method => :delete %>
<% end %>
请尝试以下方法:
<%= link_to "delete", [@project, task], :method => :delete %>
让我知道
运行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>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.