这是纯粹的好奇心。假设我有一个资源“用户”,并希望为它创建标准的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位于该位置。
如果有人能给我一些关于这个订购计划的见解,那就太棒了。
答案 0 :(得分:1)
没有特别的理由为什么这些是他们的方式,他们就是这样。
这可能源于旧的(我在这里说的是1.2天)脚手架控制器布局,其中的行动按顺序排列。
我能想象你在这里遇到的唯一问题是,如果你的用户id
为new
,那么它首先会转到UsersController#new
,而不是理想的UsersController#show
。解决方法非常简单:不要让用户将自己标识为“新”。
答案 1 :(得分:1)
如果用户#show排在第三位,则/users/new
会尝试向用户显示:id
“新”。
答案 2 :(得分:0)
我从:collection
路线和:new
路线开始读取它们,然后是:member
路线。