Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.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 3 RubyonRails教程,第11章,练习7-中断我的rspec测试_Ruby On Rails 3_Rspec_Nested Routes - Fatal编程技术网

Ruby on rails 3 RubyonRails教程,第11章,练习7-中断我的rspec测试

Ruby on rails 3 RubyonRails教程,第11章,练习7-中断我的rspec测试,ruby-on-rails-3,rspec,nested-routes,Ruby On Rails 3,Rspec,Nested Routes,我正在学习Michael Hartl关于Rails的优秀教程,但在第11章的练习7中遇到了问题 这项工作是: 添加嵌套管线,以便 /users/1/microscops显示所有 用户1的MicroPost。(你也会 必须添加Microposts控制器 索引操作和相应的视图。) 通过将routes.rb文件更改为: resources :users do resources :microposts, :only => [:create, :destroy] end 我能够从浏览器中成功

我正在学习Michael Hartl关于Rails的优秀教程,但在第11章的练习7中遇到了问题

这项工作是:

添加嵌套管线,以便 /users/1/microscops显示所有 用户1的MicroPost。(你也会 必须添加Microposts控制器 索引操作和相应的视图。)

通过将
routes.rb
文件更改为:

resources :users do
  resources :microposts, :only => [:create, :destroy]
end
我能够从浏览器中成功调用/users/1/microscops。然而,microposts\u controller\u spec.rb中的大多数测试现在都已中断。运行自动测试时,我收到“无路由匹配”错误。例如,第一个测试的内容如下:

it "should deny access to 'create'" do
  post :create
  response.should redirect_to(signin_path)
end
现在产生以下错误:

1) 微控制器访问 控件应拒绝访问“创建” 失败/错误:post:创建 没有路由匹配{:controller=>“MicroPost”, :action=>“create”}

当我检查
rake路由时

,我发现这个条目:

user_microposts POST   /users/:user_id/microposts(.:format)     {:action=>"create", :controller=>"microposts"}
这表明这条路线确实存在

在完成本教程时,是否有其他人遇到过此问题?引入嵌套管线后,是否需要在等级库文件中进行更改?Rspec是否适用于嵌套路由


谢谢

,因为这是一条嵌套路线,您需要将
用户id
通过:

some_user = way_of_creating_a_user_goes_here
post :create, :user_id => some_user.id

RSpec将尝试在没有此参数的情况下转到
/micropost
路线。

谢谢您的回答。我以为我试过了,但显然我做得不太正确-到目前为止,你的解决方案还有效。