自解释标题。我有一个sessions_helper.rb文件,其方法是logged_in?检查用户是否已登录,但当我尝试使用if语句更改视图文件中的链接时,它不起作用。
代码:
sessions_helper
module SessionsHelper
#logs in user
def log_in(user)
session[:user_id] = user.id
end
def current_user
@current_user ||= User.find_by(id: session[:user_id])
end
def logged_in?
:current_user.nil?
end
end
sessions_controller
def create
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
# log user in
log_in user
redirect_to user
查看文件
<% if logged_in? %>
# show new layout links with logout option
<% else %>
# show pre-login layout links
答案 0 :(得分:3)
您的logged_in?
方法出错,只需将:
更改为!
(我假设您要取消current_user
):
def logged_in?
!current_user.nil?
end
使用:
创建一个符号(即:current_user
),该符号将始终返回false
,因此您的方法logged_in
也会这样做。
您已成功调用logged_in?
方法,但每次都会返回false
,因此您的视图中会显示# show pre-login layout links
。