在嵌套资源上不正确地路由Rails Destroy方法

Mik*_*uto 2 ruby ruby-on-rails nested-resources destroy

我有一个List对象,具有嵌套的任务.我创建了一个显示单个任务的页面,还有一个允许用户编辑单个任务的页面.我现在想要添加从任务编辑页面上的列表中删除任务的功能.使用以下代码

<%= link_to 'Delete this task',@task, confirm: 'Are you sure?', method: :delete %>
Run Code Online (Sandbox Code Playgroud)

产量

undefined task_path method
Run Code Online (Sandbox Code Playgroud)

这段代码在show.html.erb页面上,我在那里调用@task来显示任务中存储的所有数据,所以我相信这个问题可能是某种路由错误,但我似乎无法想象它出.

相关的控制器方法是

def destroy
    @task = Task.find(params[:id])
    @task.destroy

    respond_to do |format|
        format.html { redirect_to list_tasks_path(@task) }
        format.json { head :ok }
    end
end
Run Code Online (Sandbox Code Playgroud)

我认为使用delete方法我提供的@task只会通过params发送到destroy方法,但是这个错误似乎表明这并不是它的工作原理.那么如何在Rails中正确销毁嵌套资源呢?

编辑: 这是具有嵌套资源的路径文件:

MyApp::Application.routes.draw do
    resources :lists do
        resources :tasks
    end
    get "home/index"

    root :to => 'home#index'
end
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助!

and*_*orp 5

你应该有@list设置,或者使用@ task.list(假设你有一个属于关系),你可以做以下事情:

<%= link_to "Delete this task", list_task_path(@task.list, @task), confirm: "Are you sure?", method: :delete %>
Run Code Online (Sandbox Code Playgroud)

干杯!