2017-09-20 64 views
0

我是新來的紅寶石在軌道上,我沒有使用像cancanca或設計的寶石。重定向用戶到他們的個人資料頁面,如果他們沒有註銷

假設我有一個用戶登錄,但他既沒有註銷,也沒有關閉瀏覽器。當這個用戶沒有註銷時,問題是,他仍然可以看到並訪問登錄頁面。當他在此頁面上時,我想將他重定向到其他地方。我有一個功能來檢查登錄狀態。

def authenticate_user! 
if logged_in? 

else 
    redirect_to root_path, :notice => '' 
end 
end 


class UsersController < ApplicationController 
before_action :authenticate_user! 

這兩件事保證,如果用戶沒有登錄,他將被定向到根頁面。我試圖把

def authenticate_user! 
if logged_in? 
redirect_to current_user 
else 
redirect_to root_path, :notice => '' 
end 
end 

鐵軌向我投擲一個錯誤,抱怨他不知道用戶。不過,我也在同一個幫助器中定義了current_user。

def current_user 
    @current_user ||= User.find_by(id: session[:user_id]) 
    end 

有人可以幫忙嗎?非常感謝

更新: 問題解決了: 因爲我有兩個控制器在我的情況,所以爲了避免永遠循環與路線,我分開了功能。檢查沒有登錄和路由的用戶控制器,所以如果沒有登錄,該頁面將去登錄控制器。檢查日誌,在日誌中的控制器和途徑,如果登錄。

def authenticate_user! 
if !logged_in? 
    redirect_to root_path, :notice => '' 
end 
end 

def authenticate! 
if logged_in? 
    redirect_to current_user 
end 
end 

回答

0

如果您有Users控制器和視圖設置正確,你應該能夠redirect_to user_path

如果您不確定某個特定路徑,可以在終端中鍵入rake routes,然後會顯示所有已知路線的列表。然後,您只需在「前綴」的末尾附加_route_url即可。密切關注多元化

+0

頁面沒有正確重定向是rails給我的。我的網址指定我在用戶/ 16,但不知何故,我無權直接登錄。 – user3431800

+0

您的控制器中是否有用戶顯示操作?你的路線設置正確嗎?如果你發佈你的代碼,我們可以看看 – Andy

+0

我很確定我的路線是正確的。資源:用戶被軌道用來完成所有的路由。如果我把這條線路放下來,我會對其他一切都好,只是用戶仍然可以在您的routes.rb中訪問登錄頁面 – user3431800

相關問題