Action Controller Error: undefined local variable or method `current_user'

288 views
Skip to first unread message

nobosh

unread,
Sep 3, 2010, 7:19:04 PM9/3/10
to Ruby on Rails: Talk
Newbie learning Rails. I'm currently on Chp9 here:
http://railstutorial.org/chapters/sign-in-sign-out#top

At the end of the tutorial, rails is erroring (see below). being new
to Rails and after having checked the tutorial... How do you resolve
this kind of error. It's saying current_user is not defined, and it is
supposed to be defined with/Sites/sample_app/app/helpers/
sessions_helper.rb


NameError in Pages#home

Showing /Users/iamme/Sites/sample_app/app/views/layouts/
_header.html.erb where line #6 raised:

undefined local variable or method `current_user' for #<#<Class:
0x103371258>:0x10336be70>
Extracted source (around line #6):

3: <nav class="round">
4: <ul>
5: <li><%= link_to "Home", root_path %></li>
6: <% if signed_in? %>
7: <li><%= link_to "Profile", current_user %></li>
8: <% end %>
9: <li><%= link_to "Help", help_path %></li>
Trace of template inclusion: app/views/layouts/application.html.erb

Rails.root: /Users/iamme/Sites/sample_app

Application Trace | Framework Trace | Full Trace
app/helpers/sessions_helper.rb:13:in `signed_in?'
app/views/layouts/_header.html.erb:6:in
`_app_views_layouts__header_html_erb___1701013666_2174344740_524030'
app/views/layouts/application.html.erb:10:in
`_app_views_layouts_application_html_erb__1439570095_2174436720_0'


---- END

sessions_helper.rb CODE:

module SessionsHelper

def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
current_user = user
end

def current_user=(user)
@current_user = user
end

def signed_in?
!current_user.nil?
end

def sign_out
cookies.delete(:remember_token)
self.current_user = nil
end

private

def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end

def remember_token
cookies.signed[:remember_token] || [nil, nil]
end

end


--- END

thanks

nobosh

unread,
Sep 3, 2010, 7:36:54 PM9/3/10
to Ruby on Rails: Talk
Ok figured it out, the sessions_helper.rb needs to look like this:


module SessionsHelper

def sign_in(user)
cookies.permanent.signed[:remember_token] = [user.id, user.salt]
current_user = user
end

def current_user=(user)
@current_user = user
end

def current_user
@current_user ||= user_from_remember_token
end

def signed_in?
!current_user.nil?
end

def sign_out
cookies.delete(:remember_token)
self.current_user = nil
end

private

def user_from_remember_token
User.authenticate_with_salt(*remember_token)
end

def remember_token
cookies.signed[:remember_token] || [nil, nil]
end

end



Reply all
Reply to author
Forward
0 new messages