简单的路由问题 - 注册,登录,注销,“没有路由匹配GET”/注册'

时间:2018-03-22 02:49:08

标签: ruby-on-rails ruby

我已使用bcrypt设置了注册,登录和注销。我已经设置了如下所示的基本路由,但是使用

保持相同的错误
  

“没有路线匹配GET'/注册'”......

任何人,请帮助我感到困惑 - '/注册'应该去会话#new,这是会话中的new.html.erb吗?请澄清......我的控制器可能还有问题,如有必要,我会发布。

感谢您的帮助。

Rails.application.routes.draw do

resources :users, controller: :sessions
root 'users#index'

get '/signup', to: 'users#new'
get '/signup', to: 'users#update'
post '/signup', to: 'users#create'


get '/login', to: 'sessions#new'
post '/login', to: 'sessions#create'
get '/logout', to: 'sessions#destroy'

end

2 个答案:

答案 0 :(得分:0)

要创建单一资源,您必须指定:

HTTP动词 - 路径 - 控制器#动作

e.g。 get '/signup', to: 'controller#action'

您需要知道负责创建新用户的控制器和操作是什么,然后替换 controller#action

有关路线的详细信息,请查看rails routing

答案 1 :(得分:0)

看,如果你使用resources :users,那么你不需要在routes.rb文件上再次声明这些行

get '/signup', to: 'users#new'
get '/signup', to: 'users#update'
post '/signup', to: 'users#create'

因为resources :users提供所有这些,如

之后
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
             PATCH  /users/:id(.:format)         users#update
             PUT    /users/:id(.:format)         users#update
             DELETE /users/:id(.:format)         users#destroy

new_user_path表单的Signupusers_path post方法是用户创建路由,因此对于注册,您必须使用users控制器。

与使用sessionsloginresources :sessions相同,而不是使用您的三行,您可以获得rake routes

    sessions GET    /sessions(.:format)          sessions#index
             POST   /sessions(.:format)          sessions#create
 new_session GET    /sessions/new(.:format)      sessions#new
edit_session GET    /sessions/:id/edit(.:format) sessions#edit
     session GET    /sessions/:id(.:format)      sessions#show
             PATCH  /sessions/:id(.:format)      sessions#update
             PUT    /sessions/:id(.:format)      sessions#update
             DELETE /sessions/:id(.:format)      sessions#destroy

登录时,您可以使用sessions控制器,sessions仅限createdestroy您可以更具体地使用sessions路线,例如编辑{{1}路线

sessions

您现在只能获得resources :sessions, only: [:new, :create, :destroy] 的三条路线,例如sessionsnew& create

destroy

注册表单 sessions POST /sessions(.:format) sessions#create new_session GET /sessions/new(.:format) sessions#new session DELETE /sessions/:id(.:format) sessions#destroy 登录表单 users/new.html.erb

您可以按照Michael Hartl教程了解基本身份验证。

相关问题