Ruby on rails Rails:从视图更新嵌套资源
我需要表单来更新任务,这些任务属于Projects视图中的Projects,并获取错误信息Ruby on rails Rails:从视图更新嵌套资源,ruby-on-rails,ruby-on-rails-3,forms,routes,Ruby On Rails,Ruby On Rails 3,Forms,Routes,我需要表单来更新任务,这些任务属于Projects视图中的Projects,并获取错误信息 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(.:f
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 %>
您正在尝试将请求提交到编辑路径
相反,请尝试在表单中为
使用项目任务路径(task.project,task)
。Rails将知道向正确的路由发送补丁请求。在表单中,您的URL需要是project\u task\u路径(project\u id:task.project,task)
,因为您要使用PUT。这里的错误来自Rails搜索routes.rb
的方式。它正在寻找一个PUTedit\u project\u task\u路径
,但您只有一个GET。@christophericke,引发语法错误Syntax error,unexpected'),预期为tassoc,然后您省略了项目id:
部分,但无论如何,@Dylan有相同的答案。这是正确的路径,实际上更新方法并没有在控制器中完全实现