为什么Rails按照它的方式命令创建的7条路由?

时间:2012-03-15 01:17:38

标签: ruby-on-rails

这是纯粹的好奇心。假设我有一个资源“用户”,并希望为它创建标准的7个路由集。在我的路线文件中,我只需输入resources :users即可。运行rake routes时,我们得到的是:

     users GET    /users(.:format)           users#index
           POST   /users(.:format)           users#create
  new_user GET    /users/new(.:format)       users#new
 edit_user GET    /users/:id/edit(.:format)  users#edit
      user GET    /users/:id(.:format)       users#show
           PUT    /users/:id(.:format)       users#update
           DELETE /users/:id(.:format)       users#destroy

是否有特定原因让它像这样订购?我知道将使用与请求匹配的第一条路线。

我的困惑源于我的思维过程,用户#show route将被列为第3位,而不是用户#new位于该位置。

如果有人能给我一些关于这个订购计划的见解,那就太棒了。

3 个答案:

答案 0 :(得分:1)

没有特别的理由为什么这些是他们的方式,他们就是这样。

这可能源于旧的(我在这里说的是1.2天)脚手架控制器布局,其中的行动按顺序排列。

我能想象你在这里遇到的唯一问题是,如果你的用户idnew,那么它首先会转到UsersController#new,而不是理想的UsersController#show。解决方法非常简单:不要让用户将自己标识为“新”。

答案 1 :(得分:1)

如果用户#show排在第三位,则/users/new会尝试向用户显示:id“新”。

答案 2 :(得分:0)

我从:collection路线和:new路线开始读取它们,然后是:member路线。