Ruby on Rails Friday, September 3, 2010

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

On Sep 3, 4:19 pm, nobosh <bhellm...@gmail.com> wrote:
> 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

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment