Following the Hartl RailTutorial for Rails (3.2). I keep getting this error message or, strangely enough, the message "Connection was reset":
ActiveRecord::RecordNotFound in UsersController
I try to log in and after a successful log in, I want the application to redirect the user to /show.html.erb. I believe that I pass the: id parameter in the show method in the user controller. Any advice / help would be appreciated!
I have added some relevant files below. Let me know if you need most.
sessions_controller.rb
class SessionsController < ApplicationController def new @title = "Log in" end def create user = User.find_by_email(params[:session][:email]) if user.nil? flash.now[:error] = "Invalid email/password combination." @title = "Sign in" render 'new' else flash.now[:success] = "Successful login!" sign_in user redirect_to 'users/show' end end def destroy sign_out redirect_to root_path[:name] end end
users_controller.rb
class UsersController < ApplicationController def new @user = User.new @title = "Sign up" end def show if params[:id].nil? && current_user @user = current_user else @user = User.find(params[:id]) end @title = @user.name end def create @user = User.new(params[:user]) if @user.save sign_in @user flash[:success] = "Account created!" redirect_to @user else @title = "Sign up" render 'new' end end def destroy @user.destroy redirect_to users_path, :flash => { :success => "User destroyed." } end end
routes.rb
SampleApp::Application.routes.draw do resources :users resources :sessions, :only => [:new, :create, :destroy] match '/sessions', :to => 'users#show' match '/signup', :to => 'users#new' match '/login', :to => 'sessions#new' match '/logout', :to => 'sessions#destroy' root :to => 'pages#home'
Edit: added session_helper.rb
module SessionsHelper def sign_in(user) cookies.permanent.signed[:remember_token] = user.remember_token current_user = user end def signed_in? !current_user.nil? end def current_user=(user) @current_user = user end def current_user @current_user ||= user_from_remember_token end def sign_out cookies.delete(:remember_token) current_user = nil end private def user_from_remember_token remember_token = cookies[:remember_token] User.find_by_remember_token(remember_token) unless remember_token.nil? end end
source share