Ruby on rails rspec控制器put更新测试不工作

Ruby on rails rspec控制器put更新测试不工作,ruby-on-rails,rspec-rails,Ruby On Rails,Rspec Rails,我被困在rspec测试中,该测试正在测试控制器中的更新方法。我得到一个路由错误。希望有比我聪明的人能帮忙。我在这个网站上搜索和阅读了很多帖子,但没有一篇打开我脑海中的灯泡 注意:这在通过浏览器查找和更新记录时有效。只是不知道该怎么做 此控制器更新方法的我的路径: PUT /admins/project_codes/:id(.:format) admins/project_codes#update def update @project_code = ProjectC

我被困在rspec测试中,该测试正在测试控制器中的更新方法。我得到一个路由错误。希望有比我聪明的人能帮忙。我在这个网站上搜索和阅读了很多帖子,但没有一篇打开我脑海中的灯泡

注意:这在通过浏览器查找和更新记录时有效。只是不知道该怎么做

此控制器更新方法的我的路径:

PUT    /admins/project_codes/:id(.:format)          admins/project_codes#update
def update
  @project_code = ProjectCode.find(params[:project_code][:id])
  if @project_code.update_attributes(params[:project_code])
    redirect_to(:action => :show, :id => params[:project_code][:id])
  else
    redirect_to(:action => :edit, :id => params[:project_code][:id], :notice => "Your record for #{params[:project_code][:code]} could not be updated at this time.")
  end
end
我的控制器更新方法:

PUT    /admins/project_codes/:id(.:format)          admins/project_codes#update
def update
  @project_code = ProjectCode.find(params[:project_code][:id])
  if @project_code.update_attributes(params[:project_code])
    redirect_to(:action => :show, :id => params[:project_code][:id])
  else
    redirect_to(:action => :edit, :id => params[:project_code][:id], :notice => "Your record for #{params[:project_code][:code]} could not be updated at this time.")
  end
end
编辑表单使用name=project\u code[…]作为字段,即:

<input id="project_code_code" name="project_code[code]" size="10" type="text" value="F-UZBEKIST" /
我的错误:

1) Admins::ProjectCodesController PUT #update updates with valid name change
 Failure/Error: put 'update', :project_code => code.attributes
 ActionController::RoutingError:
   No route matches {:project_code=>{"id"=>"10375", "code"=>"ABCDEFG", "name"=>"new-name", "update_by"=>"jdc44", "created_at"=>"2015-10-07 13:22:31 -0400", "updated_at"=>"2015-10-07 13:22:31 -0400"}, :controller=>"admins/project_codes", :action=>"update"}
任何帮助都将不胜感激。

似乎您的PUT/admins/project_code/:id.:format需要url中的:id参数,请尝试发送以下内容:

put :update, :id => code.id, :project_code => code.attributes

非常感谢。就是这样。奇数表单没有普通的旧名称=id字段。name=project\u代码[id]在那里。现在我得到一个>>不能批量分配受保护的属性:id,created\u at,updated\u at。但是,我以前见过这些。感谢YOU@JohnCowan我很高兴能帮上忙。如果你认为我的答案解决了你的问题,请考虑接受和投票。您可以在此处阅读有关此过程的更多信息:。谢谢