rails默认操作在路由中缺少参数

时间:2013-05-08 13:22:41

标签: ruby ruby-on-rails-3 routing

请原谅我的蹩脚问题,但我被困住了。 我的routes.rb文件简单明了,我有:

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

我的问题是:show和edit动作中的id param在哪里?根据本教程:http://guides.rubyonrails.org/routing.html路由中应该有“id”参数,如下所示:

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

除此之外,展示,更新和销毁行动的路线在哪里? 我认为我缺少一些基本的东西,因为这真的很糟糕。运行Rails 3.2.11 谢谢你的帮助

2 个答案:

答案 0 :(得分:2)

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

有关详细信息,请参阅guide

的“奇异资源”部分

答案 1 :(得分:0)

使用resources而不是resource将确保Rails占用了很多资源。

您的路线应如下所示

resources :books do
  resources :reviews
end