1

I am running Rails 3.2.12 and Devise 3.1 and I have in the routes.rb this:

devise_for :users do
  get '/login'    => 'devise/sessions#new', as: :login
  get '/logout'   => 'devise/sessions#destroy', as: :logout
end

However, when I hit

127.0.0.1:3000/login

I get

No route matches [GET] "/login"

What works is

127.0.0.1:3000/users/login

Is there anything else I have to do so that I can skip typing /users/ part?

Thank you!

Nik So
  • 16,683
  • 21
  • 74
  • 108

2 Answers2

1
devise_for :users, :path => '', :path_names => { :sign_in => 'login'}

Good info about customizing Devise paths on this StackOverflow post :)


Here's some live code which works for one of our live apps:

  #User Management (Devise)
  devise_for :users, :path => '', :controllers => {:sessions => 'sessions', :registrations => 'registrations'}, :path_names => { :sign_in => 'login', :password => 'forgot', :confirmation => 'confirm', :unlock => 'unblock', :registration => 'register', :sign_up => 'new', :sign_out => 'logout'}
  as :user do
    get 'register', :to => 'devise/registrations#new'
    delete 'logout', :to => 'sessions#destroy'
  end
Community
  • 1
  • 1
Richard Peck
  • 76,116
  • 9
  • 93
  • 147
0
devise_scope :user do
  get "/login" => "devise/sessions#new"
end

See this for more details

tihom
  • 7,923
  • 1
  • 25
  • 29