2013-05-08 69 views
0

对不起,我的跛脚问题,但我坚持。 平原,在我的routes.rb文件简单,我有:rails默认行为在路由中缺少参数

resource :books do 
    resource :reviews 
    end 

运行耙路线| grep的评论给我:

books_reviews POST /books/reviews(.:format)  reviews#create 
new_books_reviews GET /books/reviews/new(.:format) reviews#new 
edit_books_reviews GET /books/reviews/edit(.:format) reviews#edit 
        GET /books/reviews(.:format)  reviews#show 
        PUT /books/reviews(.:format)  reviews#update 
        DELETE /books/reviews(.:format)  reviews#destroy 

我的问题是:在显示和编辑操作中的id参数是哪里?根据本教程:http://guides.rubyonrails.org/routing.html应该有“身份证” PARAMS路由,就像这样:

new_books_reviews GET /books/:id/reviews/new(.:format) reviews#new 
edit_books_reviews GET /books/:id/reviews/edit(.:format) reviews#edit 
         GET /books/:id/reviews(.:format)  reviews#show 

之上那地方是节目,更新路线和破坏行动? 我认为我错了一些基本的东西,因为这真的很糟糕。 Running Rails 3.2.11 感谢您的帮助

回答

2

尝试使用资源而不是资源。 Rails认为当您使用单数形式并且不需要该ID时,只有一个。

欲了解更多信息请参阅使用的guide

+0

这做到了!我知道我必须犯一些愚蠢的错误。非常感谢你! – user2362462 2013-05-08 13:28:56

0

的“奇异资源”部分resources超过resource将确保Rails的占了很多资源。

你的路线应该是这样的

resources :books do 
    resources :reviews 
end 
+0

是的,非常感谢你:) – user2362462 2013-05-08 13:39:27