2011-12-21 4 views
2

私はネストされたタスクを持つListオブジェクトを持っています。私は個々のタスクを表示するページと、ユーザーが個々のタスクを編集できるページを作成しました。タスク編集ページのリストからタスクを削除する機能を追加したいと考えています。次のコードネストされたリソースのRails Destroyメソッドが正しくルーティングされていません

<%= link_to 'Delete this task',@task, confirm: 'Are you sure?', method: :delete %> 

を使用すると、このコードは、私が@taskは、タスク内に格納されたデータのすべてを表示するために呼び出すshow.html.erbページ、上にある

undefined task_path method 

得たので、私は信じていますこの問題は何らかのルーティングエラーである可能性がありますが、わかりません。

「関連するコントローラメソッドは

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 

は、私は、削除の方法と私は供給@taskはただのparamsを経由して破壊する方法に送られるだろうと思っているが、このエラーは、このISNを示しているように見えます正確にどのように動作するか。では、Railsのネストされたリソースを適切に破壊するにはどうすればいいですか?

編集:ここでは は、ネストされたリソースを持つルートファイルです:

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

    root :to => 'home#index' 
end 

はあなたの助けをありがとう!

+0

ルートの問題ですので、質問に 'routes.rb'を追加してください。 – Mischa

答えて

5

あなたは@listの設定、または使用する@ task.listを持っている必要があります(関係に属していると仮定)、および次の操作を行うことができます:

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

乾杯を!

+0

これは魅力的に機能しました、ありがとうございます! –

4

このお試しください:それは、ネストされたリソースなので、あなたが渡す必要があり、

<%= link_to 'Delete this task', [@list, @task], confirm: 'Are you sure?', method: :delete %> 

いずれかの方法:

<%= link_to 'Delete this task', list_task_path(@list, @task), confirm: 'Are you sure?', method: :delete %> 

それともあなたはそれをよりコンパクトにしたい場合は(あなたがそれを書いたように) @list@taskの両方のオブジェクトです。

関連する問題