无法调用logged_in?查看更改布局链接的方法

时间:2017-05-28 13:00:33

标签: ruby-on-rails

自解释标题。我有一个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 

1 个答案:

答案 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