Authlogic not active

Trying to add authlogic in a simple project but get the error;

Showing app/views/layouts/application.html.erb where line #33 raised: undefined method `underscore' for nil:NilClass Extracted source (around line #33): 30: <div id="mainleft"> 31: <ul class="menu"> 32: <li><%= nav_link "Home", "site", "index" %></li> 33: <% if current_user %> 34: <li>The site</li> 35: <% else %> 36: <li><%= nav_link "Login", "authentications", "login" %></li>

class ApplicationController < ActionController::Base   protect_from_forgery   filter_parameter_logging :password, :password_confirmation   helper_method :current_user

  private     def current_user_session       return @current_user_session if defined?(@current_user_session)       @current_user_session = Authentication.find     end

    def current_user       return @current_user if defined?(@current_user)       @current_user = current_user_session && current_user_session.user     end

authentication model class Authentication < Authlogic::Session::Base   authenticate_with User end

user model class User < ActiveRecord::Base    acts_as_authentic do |c|     c.session_class = Authentication     c.login_field = :login     c.ignore_blank_passwords = false    end end

routes in routes.rb   map.root :controller => "site", :action => "index"   map.resource :authentications   map.resources :users

  map.login "login", :controller =>"authentications", :action => "login"   map.logout "logout", :controller =>"authentications", :action => "destroy"

The problem is in ApplicationController       @current_user_session = Authentication.find Authentication is not active? I have config.gem "authlogic" in environment.rb file.

Any ideas?

Shouldn't this be:

map.login "login", :controller =>"authentications", :action => "new"

? (Note that I changed the action to "new")

Unfortunately the problem does not appear to be a routes problem but a ‘not initialised’ authlogic problem. By changing the App.Controller methods I have now moved the problem to the create procedure after logging on. I managed to create a user from the console and Authlogic filled in all the ‘special’ fields. But logging on and calling the create session (call Authentication) causes the same error undefined method `underscore' for nil:NilClass which occurs when calling @authentication.save.

def create     @authentication = Authentication.new(params[:authentication])     if @authentication.save      flash[:notice] = "Login successful!"      redirect_to root_url     else      render :action => :new     end   end

My App.Controller now has the session/user checking methods and cause no problems. (so far)

  private     def current_user      return @current_user if defined?(@current_user)      @current_user = current_user_session && current_user_session.user     end

    def current_user_session       return @current_user_session if defined?(@current_user_session)       if defined?(Authentication.Find) then        @current_user_session = Authentication.find       else        @current_user_session=nil       end    end

I am using rails 2.3.8 and Authlogic 2.1.6, and I like to try and keep to one word descriptions of models and controls so Authentication instead of UserSession.

fyi for people who find this thread:

I had the same issue with undefined method `underscore', and my only solution was recreating my app from scratch, using this authlogic/rails3 template:

https://github.com/davidchua/authlogic-rails3-template