我正在阅读Michael关于Rails的优秀教程,但是我在第11章的练习7中遇到了问题。
这项工作是:
添加一个嵌套路由,以便/ user / 1 / microposts显示用户1的所有微博。(您还必须添加一个Micropost控制器索引操作和相应的视图。)
通过将我的routes.rb文件更改为:
resources :users do
resources :microposts, :only => [:create, :destroy]
end我能够在浏览器中成功地调用/user/1/micropost。然而,microposts_controller_spec.rb中的大多数测试现在都失败了。在运行自动测试时,我会收到“无路由匹配”错误。例如,第一个测试简单地读到:
it "should deny access to 'create'" do
post :create
response.should redirect_to(signin_path)
end现在产生以下错误:
1) MicropostsController访问控制应该拒绝对'create‘Failure/Error的访问: post :create路由匹配{:controller=>“micropost”,:action=>"create"}
当我检查rake routes时
,我发现这个条目:
user_microposts POST /users/:user_id/microposts(.:format) {:action=>"create", :controller=>"microposts"}这说明这条路线确实存在。
在完成本教程时,还有其他人遇到过这个问题吗?一旦引入嵌套路由,是否需要对规范文件进行更改?Rspec与嵌套路由一起工作吗?
谢谢
发布于 2011-01-30 21:14:34
因为这是一个嵌套的路由,所以您需要通过user_id:
some_user = way_of_creating_a_user_goes_here
post :create, :user_id => some_user.idRSpec将尝试在没有此参数的情况下转到/microposts路由。
https://stackoverflow.com/questions/4843926
复制相似问题