我是ruby on rails的新手,我没有使用像cancanca或devise这样的宝石。
假设我有一个用户登录,但他既没有注销也没有关闭浏览器。当这个用户没有注销时,问题是,他仍然可以看到并访问登录页面。当他在这个页面上时,我想将他重定向到其他地方。我有一个检查登录状态的功能。
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 :(得分:0)
如果您的Users
控制器和视图设置正确,您应该可以redirect_to user_path
。
如果您不确定特定路径,可以在终端中键入rake routes
,它会显示所有已知路由的列表。然后,您只需在“前缀”的末尾添加_route
或_url
即可。密切关注复数化