Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:从视图更新嵌套资源_Ruby On Rails_Ruby On Rails 3_Forms_Routes - Fatal编程技术网

Ruby on rails Rails:从视图更新嵌套资源

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

我需要表单来更新任务,这些任务属于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(.: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
的方式。它正在寻找一个PUT
edit\u project\u task\u路径
,但您只有一个GET。

@christophericke,引发语法错误Syntax error,unexpected'),预期为tassoc,然后您省略了
项目id:
部分,但无论如何,@Dylan有相同的答案。这是正确的路径,实际上更新方法并没有在控制器中完全实现