1

我对 Rails 很陌生,基本上我想制作一个用户注册表单。

我目前正在使用 rails 3.2.3

基本上,我想在用户的基本 REST 路由之上创建基本路由,例如用户/注册。

这是我的路线.rb

resources :user do
  collection do
    get 'register'
  end
end

这是我的 rake 路线:

     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

根据我的理解,由于注册用户在显示之上,所以在显示之前应该先与注册匹配。

但是,当我尝试执行 localhost:3000/user/register 时,它给了我这个错误:

没有路由匹配 {:action=>"show", :controller=>"user"}

有人可以帮我吗?

谢谢!!

4

2 回答 2

2

(我会将此作为评论,但我需要代码示例的标记。)

我使用 Rails 3.1.4 尝试了您的路线,它的工作方式与您预期的一样。

我注意到您使用的是字符串而不是符号。更标准的方法是:

resources :users do
  collection do
    get :register
  end
end
于 2012-04-15T11:26:50.227 回答
0

你拼错了你的资源吗?它通常是复数,users。但这不是重点——这只是一个惯例。关键是您可能创建了一个名为的控制器UsersController,并且该控制器不遵循您的资源名称。检查它,或将其命名为 name UserController。但我强烈建议你要这样做——如果你需要/user路径,只需使用:path你的资源的选项,你会没事的:

resources :users, path: 'user' do

同样,如果还不算太晚,请使用:

resources :users do

您的注册路径将是/users/register.

于 2012-04-15T10:30:00.243 回答