我对rails非常陌生,基本上我想制作一个用户注册表。
我目前正在使用rails 3.2.3
基本上我想在用户的基本REST路径之上创建基本路由,例如用户/注册。
这是我的routes.rb
resources :user do
collection do
get 'register'
end
end
这是我的佣金路线:
register_user_index GET /user/register(.:format) user#register
user_index GET /user(.:format) user#index
POST /user(.:format) user#create
new_user GET /user/new(.:format) user#new
edit_user GET /user/:id/edit(.:format) user#edit
user GET /user/:id(.:format) user#show
PUT /user/:id(.:format) user#update
DELETE /user/:id(.:format) user#destroy
根据我的理解,由于注册用户位于show之上,因此在显示之前它应首先与register匹配。
但是,当我尝试执行localhost:3000 / user / register时,它会给我这个错误:
没有路线匹配{:action =>“show”,:controller =>“user”}
有人可以帮我吗?
谢谢!
答案 0 :(得分:1)
(我会将此作为评论,但我需要代码示例的标记。)
我使用Rails 3.1.4尝试了你的路线,它的工作方式和预期的一样。
我注意到你使用的是字符串而不是符号。更标准的方法是:
resources :users do
collection do
get :register
end
end
答案 1 :(得分:0)
你拼错了资源吗?它通常是复数,users
。但这不是重点 - 这只是一个惯例。关键是您可能创建了一个名为UsersController
的控制器,并且此控制器不遵循您的资源名称。检查它,或将其命名为UserController
。但我强烈建议您不这样做 - 如果您需要/user
路径,只需在您的资源上使用:path
选项,就可以了:
resources :users, path: 'user' do
同样,如果还不晚,请使用:
resources :users do
您的注册路径为/users/register
。