0
votes

I'm using Devise 1.5.1 in a Rails 3.0.3 app. It works well, with one exception: The signout link gives me this error:

Routing Error

uninitialized constant UsersController

The link that leads to this is:

<%= link_to('Logout', destroy_user_session_path, :method => :delete) %>

I haven't created an app/controllers/user_controller.rb file, but my understanding that this wasn't necessary when using Devise, correct?

In case it's relevant, my routes.rb file looks like:

Su::Application.routes.draw do

 get "group/create"

  devise_for :users

  resources :users
  resources :payers
  resources :payments
  resources :categories
  resources :groups

  match "adduser", :to => "groups#adduser"

  root :to => "pages#home"
end

...and app/models/user.rb looks like:

class User < ActiveRecord::Base
  # Include default devise modules. Others available are:
  # :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :first_name, :email, :password, :password_confirmation, :remember_me, :group_id
end

I have googled and searched on SO extensively, but to no avail. How should I troubleshoot something like this?

1

1 Answers

3
votes

In your routes file, you have

devise_for :users

which serves for the routes for Devise, but

resources :users

is a generic CRUD route, which makes Rails to think that in your app, you have Users Controller, and that you are doing something with the Users model in your model.

The error tells that you don't have a Users Controller and that's true, but it's looking for it because of the route.
So, either delete the line or add a Users Controller if you want to do something with the Users model.

If anything is not clear, post it as a comment.