我正在尝试为我的用户模型手动创建路由(不使用"resource: users
"),
所以在routes.rb
:
get '/users/:id', to: 'users#show', as: 'user'
get '/users/new', to: 'users#new', as: 'new_user'
但是当我试图去/users/new
我得到"Couldn't find User with id=new"
.
我确实理解为什么会发生这种情况,但我想找到按原样允许它的方法(不更改其中一条路径)。 怎么可能?
路线的顺序很重要。 由于您已在new
路由之前定义了show
路由,因此show
操作将在执行id
的情况下执行new
。
交换两条路线的位置:
get '/users/new', to: 'users#new', as: 'new_user'
get '/users/:id', to: 'users#show', as: 'user'
您可以按如下方式定义路由:
get '/users', to: 'users#index'
post '/users', to: 'users#create'
get '/users/new', to: 'users#new', as: 'new_user'
get '/users/:id/edit', to: 'users#edit', as: 'edit_user'
get '/users/:id', to: 'users#show', as: 'user'
put '/users/:id', to: 'users#update'
delete '/users/:id', to: 'users#destroy'
只要在/users/:id
(显示用户路径)之前定义了/users/new
(新用户路径)路由。Rails路由器将正确路由它们。