Я хочу, чтобы на моей домашней странице отображались слова 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
Любая помощь, которую могут предложить люди, будет очень признательна, так как я пробовал разные вещи на своей домашней странице, и ничего не кажетсячтобы получить его с выходом из системы.
Спасибо