我希望我的主页显示单词logout和路径link_to logout_path以显示用户何时登录。
我有这个工作,但刚刚实现了一个记住我的单选按钮,并且使用user.id来识别用户到auth_token似乎搞砸了我的if和else语句。我真的无法弄清楚我需要改变什么。
我有以下内容:
会话控制器
class SessionsController < ApplicationController def new end def create user = User.find_by_email(params[:email]) if user && user.authenticate(params[:password]) if params[:remember_me] cookies.permanent[:auth_token] else cookies[:auth_token] end redirect_to root_url else flash.now.alert = "Invalid email or password!" render "signup" end end def destroy cookies.delete(:auth_token) redirect_to root_url end end
我的主页的相关区域:
<div class="login">
<li><% if session[:user_id] %>
<!-- user is logged in -->
<%= link_to "Logout", logout_path %>
<% else %>
<!-- user is not logged in -->
<%= link_to "Login", login_path %>
/
<%= link_to "Sign up", signup_path %>
<% end %></li>
</div>
我的用户模型
class User < ActiveRecord::Base
has_secure_password
before_create { generate_token(:auth_token) }
validates_presence_of :password, :on => :create
validates_presence_of :email
validates_length_of :email, :within => 6..50
validates_length_of :password, :within => 6..30
validates_uniqueness_of :email, :case_sensitive => false, :on => :create
validates_format_of :email, :with => /^[A-Z0-9_.%-]+@([A-Z0-9_]+\.)+[A-Z]{2,4}$/i,
:message => "must be a valid e-mail address"
def generate_token(column)
begin
self[column] = SecureRandom.urlsafe_base64
end while User.exists?(column => self[column])
end
end
我的应用程序控制器:
class ApplicationController < ActionController::Base
protect_from_forgery
private
def current_user
@current_user ||= User.find_by_auth_token!(cookies[:auth_token]) if cookies[:auth_token]
end
end
人们可以提供的任何帮助都会非常感激,因为我在我的主页上尝试了各种不同的东西,似乎没有任何东西让它显示Logout。
由于