关于Ruby on Rails路由配置的一些建议
当你需要加入一个或多个动作至一个RESTful资源时(你真的需要吗?),使用memberandcollection路由。
#差 get'subscriptions/:id/unsubscribe' resources:subscriptions #好 resources:subscriptionsdo get'unsubscribe',on::member end #差 get'photos/search' resources:photos #好 resources:photosdo get'search',on::collection end
若你需要定义多个member/collection路由时,使用替代的区块语法(blocksyntax)。
resources:subscriptionsdo memberdo get'unsubscribe' #更多路由 end end resources:photosdo collectiondo get'search' #更多路由 end end
使用嵌套路由(nestedroutes)来更佳地表达与ActiveRecord模型的关系。
classPost<ActiveRecord::Base has_many:comments end classComments<ActiveRecord::Base belongs_to:post end #routes.rb resources:postsdo resources:comments end
使用命名空间路由来群组相关的行为。
namespace:admindo #Directs/admin/products/*toAdmin::ProductsController #(app/controllers/admin/products_controller.rb) resources:products end
不要在控制器里使用留给后人般的疯狂路由(legacywildcontrollerroute)。这种路由会让每个控制器的动作透过GET请求存取。
#非常差 match':controller(/:action(/:id(.:format)))'