我正在尝试为我的用户模型手动创建路线(不是使用“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"
。
我确实理解为什么会这样,但我想找到原样允许它(不改变其中一条路径)。怎么可能?
答案 0 :(得分:5)
路线的顺序很重要。由于您已在show
路由之前定义了new
路由,因此show
操作将以id
new
执行。
交换两条路线的位置:
get '/users/new', to: 'users#new', as: 'new_user'
get '/users/:id', to: 'users#show', as: 'user'
答案 1 :(得分:2)
您可以按如下方式定义路线:
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/new
之前定义/users/:id
(新用户路径)路由(显示用户路径)。 Rails路由器可以正确地路由它们。