如果用户没有注销,则会将用户重定向到他们的个人资料页面

时间:2017-09-20 02:26:22

标签: ruby-on-rails

我是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

1 个答案:

答案 0 :(得分:0)

如果您的Users控制器和视图设置正确,您应该可以redirect_to user_path

如果您不确定特定路径,可以在终端中键入rake routes,它会显示所有已知路由的列表。然后,您只需在“前缀”的末尾添加_route_url即可。密切关注复数化