在使用资源路由和使用HTTP动词约束之间是否有推荐的实践?
例如,哪个更好:
resources :posts, only: [:index, :show] do
resources :comments, only: [:index]
end
或
scope '/posts' do
get '' => 'posts#index'
get '/:id' => 'posts#show'
get '/comments' => 'posts#comments'
end
编辑:为了清楚,我特别要求的情况下,我只需要1或2个动作。
您应该使用第一个。在你的路由文件中使用它们的帮助器是rails的惯例。这完成了几件事:
- 有人读你的路由文件将从一个共同的理解到底发生了什么,而不是单独阅读每个手动定义的路由。
- 更简洁。如果你包含了所有的动词,你可以得到一个漂亮而干净的
resources :posts
。如果只包含一个选项,则只需要使用:only
或:except
指定一个选项。嵌套路由确实打破了这一点。 - 这是在guides.rubyonrails.org中定义的约定,正如sevenseacat指出的。
对于rails这样的库,通常有关于预期和首选代码实现的指南。Rails的指南可以在guides.rubyonrails.org找到。您应该习惯于先查看他们的文档,特别是在遇到这样的主题时,以便找到关于首选哪种方法的答案。