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
頁面沒有正確重定向是rails給我的。我的網址指定我在用戶/ 16,但不知何故,我無權直接登錄。 – user3431800
您的控制器中是否有用戶顯示操作?你的路線設置正確嗎?如果你發佈你的代碼,我們可以看看 – Andy
我很確定我的路線是正確的。資源:用戶被軌道用來完成所有的路由。如果我把這條線路放下來,我會對其他一切都好,只是用戶仍然可以在您的routes.rb中訪問登錄頁面 – user3431800