我正在阅读 Michael Hartl 关于 Rails 的优秀教程,但我在第 11 章的练习 7 中遇到了麻烦。
这个练习是:
添加一个嵌套路由,以便 /users/1/microposts 显示用户 1 的所有微帖子。(您还必须添加一个 Microposts 控制器索引操作和相应的视图。)
我通过将routes.rb
文件更改为读取成功地做到了这一点:
resources :users do
resources :microposts, :only => [:create, :destroy]
end
我能够从浏览器成功调用 /users/1/microposts 。但是,microposts_controller_spec.rb 中的大多数测试现在都被破坏了。运行自动测试时收到“无路由匹配”错误。例如,第一个测试,它简单地读取:
it "should deny access to 'create'" do
post :create
response.should redirect_to(signin_path)
end
现在产生以下错误:
1) MicropostsController 访问控制应该拒绝访问 'create' 失败/错误:post :create 没有路由匹配 {:controller=>"microposts", :action=>"create"}
当我检查rake routes
,我发现这个条目:
user_microposts POST /users/:user_id/microposts(.:format) {:action=>"create", :controller=>"microposts"}
这表明该路线确实存在。
有没有其他人在完成教程时遇到过这个问题?引入嵌套路由后,是否需要在规范文件中进行更改?Rspec 是否适用于嵌套路由?
谢谢