0

プロジェクトビューからプロジェクトに属するタスクを更新するためのフォームが必要で、エラーが発生します

No route matches [PATCH] "/projects/1/tasks/1/edit"

これは利用可能なルートのリストです

project_tasks_path   GET     /projects/:project_id/tasks(.:format)   tasks#index
                     POST    /projects/:project_id/tasks(.:format)   tasks#create
new_project_task_path    GET     /projects/:project_id/tasks/new(.:format) tasks#new
edit_project_task_path   GET     /projects/:project_id/tasks/:id/edit(.:format)  tasks#edit
project_task_path    GET     /projects/:project_id/tasks/:id(.:format)   tasks#show
                     PATCH   /projects/:project_id/tasks/:id(.:format)   tasks#update
                     PUT     /projects/:project_id/tasks/:id(.:format)   tasks#update
                     DELETE  /projects/:project_id/tasks/:id(.:format)   tasks#destroy
 projects_path   GET     /projects(.:format)     projects#index
                     POST    /projects(.:format)     projects#create
 new_project_path    GET     /projects/new(.:format)     projects#new
 edit_project_path   GET     /projects/:id/edit(.:format)    projects#edit
 project_path    GET     /projects/:id(.:format)     projects#show
                     PATCH   /projects/:id(.:format)     projects#update
                     PUT     /projects/:id(.:format)     projects#update
                     DELETE  /projects/:id(.:format)     projects#destroy
 projects_update_path    POST    /projects/update(.:format)  projects#update
 projects_add_path   POST    /projects/add(.:format)     projects#add
                     POST    /projects/:project_id/tasks/:id/edit(.:format)  tasks#edit
 root_path   GET     /   projects#index

ここにビューコードがあります

<% @projects.each do |project| %>

<%= project.name %>
<% project.tasks.each do |task| %>

  <%= task.name %></p>

  <%= form_for [task.project, task], url: edit_project_task_path(task.project, task) do |f| %>
  <%= f.label :name %>
  <%= f.text_field :name %>
  <%= f.submit "Update task" %>
  <% end %>
<% end %>
<% end %>
4

2 に答える 2

0

project_task_path(project_id: task.project, task)フォームでは、PUT を使用するため、URL を指定する必要があります。ここでのエラーは、Rails がroutes.rb. PUT を探してedit_project_task_pathいますが、GET しかありません。

于 2013-08-12T18:57:49.637 に答える
0

editリクエストをルートに送信しようとしています。

代わりに、で使用project_task_path(task.project, task)してみてくださいform_for。Rails は、適切なルートに PATCH リクエストを送信することを認識します。

于 2013-08-12T18:55:55.317 に答える