Hey everyone,
Sorry for the novice question but I am trying to get to grips with RoR. I have a very basic sign up and login process in place but am having some difficulty getting the routing correct. I am also unsure whether I am actually being logged out successfully when I push my logout button because it isn't then displaying the login button as it should.
My setup is as so:
Sessions Controller
User ControllerCode:class SessionsController < ApplicationController def new end def create user = User.find_by_email(params[:email]) if user && user.authenticate(params[:password]) session[:user_id] = user.id redirect_to root_url, :notice => "Logged in!" else flash.now.alert = "Invalid email or password!" render "signup" end end def destroy session[:user_id] = nil redirect_to root_url, :notice => "Logged Out!" end end
User ModelCode:class UserController < ApplicationController def new @user = User.new end def create @user = User.new (params[:user]) if @user.save redirect_to root_url, :notice => "Signed Up!" else render "user/new" end end end
Sessions/new.html.erbCode:class User < ActiveRecord::Base has_secure_password validates_confirmation_of :password validates_presence_of :password, :on => :create validates_presence_of :email validates_uniqueness_of :email, :on => :create end
User/new.html.erbCode:<h1>Log In</h1> <%= form_tag login_path do %> <div class="field"> <%= label_tag :email %> <%= text_field_tag :email, params[:email] %> </div> <div class ="field"> <%= label_tag :password %> <%= password_field_tag :password %> </div> <div class="actions"><%= submit_tag "Log in" %></div> <%end%>
<h1>Sign Up</h1>Code:<% if session[:user_id] %> <!-- user is logged in --> <%= link_to logout_path %> <% else %> <!-- user is not logged in --> <%= link_to login_path %> <% end %>
Finally my Routes fileCode:<%= form_for @user do |f| %> <% if @user.errors.any? %> <div class="error_messages"> <h2>Form is invalid</h2> <ul> <% for message in @user.errors.full_messages %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class = "field"> <%= f.label :email %> <%= f.text_field :email %> </div> <div class = "field"> <%= f.label :password %> <%= f.password_field :password %> </div> <div class = "field"> <%= f.label :password_confirmation %> <%= f.password_field :password_confirmation %> </div> <div class="actions"><%= f.submit %></div> <% end %>
Sorry for the extensive use of code in this post but I figure it's best to give a well rounded view of everything so people can see where I am going wrong.Code:MadeByV2::Application.routes.draw do controller :user do get "signup" => "user#new" end resources :users controller :sessions do get "login" => "sessions#new" post "login" => "sessions#create" delete "logout" => "sessions#destroy" end root :to => "user#new" end
Any help you can offer really would be much appreciated because I don't seem to be getting it myself
Thanks,
Tom




Reply With Quote

Bookmarks