2017-05-28 59 views
-3

自解釋標題。我有一個sessions_helper.rb文件,其中有方法logged_in?檢查用戶是否已登錄,但是當我嘗試使用if語句更改視圖文件中的鏈接時,它不起作用。無法呼叫logged_in?方法來查看更改佈局鏈接

代碼:

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 

回答

3

您已經在logged_in?錯誤滿足HOD,只是改變:!(我假定你正在尋找否定current_user):

def logged_in? 
    !current_user.nil? 
end 

使用:創建一個符號(即:current_user)將永遠返回false,所以你的方法logged_in也會。

您已成功撥打logged_in?方法,但每次都返回false,因此您在視圖中獲得# show pre-login layout links

+0

謝謝。我也從這裏的帖子意識到,從助手「調用」一種方法是不正確的術語,我可以知道什麼是? – Solias

+0

@Solias「Calling」沒問題,我只是想強調一下這個詞來說清楚。但我看到我只是添加了混亂。 – Gerry