routes.rb中路由的顺序是否重要?

pat*_*ckS 0 ruby ruby-on-rails ruby-on-rails-4

我的routes.rb文件看起来像:

resources :contents, only: [:show]
get 'contents/by_hardware', to: 'contents#show_by_hardware'
Run Code Online (Sandbox Code Playgroud)

通过此设置,我无法访问contents/by_hardware路线.

但是如果我routes.rb以不同的顺序设置我的文件,那么everthing就可以了.

get 'contents/by_hardware', to: 'contents#show_by_hardware'    
resources :contents, only: [:show]
Run Code Online (Sandbox Code Playgroud)

routes.rb文件中的顺序是否重要?

Ser*_*sev 5

是的,订单非常重要.

它的工作原理如下:resources :contents, only: [:show]创建这条路线

content GET    /contents/:id(.:format)       contents#show
Run Code Online (Sandbox Code Playgroud)

因此,例如,当您请求时,http://localhost:3000/contents/by_hardware此路由与此URL匹配.它ContentsController#show用params 调用动作{'id' => "by_hardware"}.您的自定义操作未被考虑,因为已找到匹配的路由.