2

ネストされたタスクを持つListオブジェクトがあります。個々のタスクを表示するページと、ユーザーが個々のタスクを編集できるページを作成しました。タスク編集ページのリストからタスクを削除する機能を追加したいと思います。次のコードを使用する

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

収量

undefined task_path method

このコードは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

deleteメソッドを使用すると、指定した@taskがparamsを介してdestroyメソッドに送信されると思いましたが、このエラーは、これが正確に機能していないことを示しているようです。では、Railsでネストされたリソースを適切に破棄するにはどうすればよいですか?

編集: ネストされたリソースを含むルートファイルは次のとおりです。

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

    root :to => 'home#index'
end

ご協力ありがとうございました!

4

2 に答える 2

5

@listを設定するか、@ task.listを使用する必要があります(関係に属していると仮定します)。次のように実行できます。

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

乾杯!

于 2011-12-21T06:35:48.127 に答える
4

これを試して:

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

または、よりコンパクトにしたい場合(あなたが書いたように):

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

@listいずれにせよ、これはネストされたリソースであるため、とオブジェクトの両方を渡す必要があり@taskます。

于 2011-12-21T06:36:36.953 に答える