未定义的方法“管理员?” nil:NilClass
Undefined method `admin?' for nil:NilClass
我已经限制其他用户访问一个页面,但如果我没有登录并访问该页面,我会在行 redirect_to '/' unless current_user.admin?
中收到错误消息
但如果我登录并访问该页面,它工作正常。
在我的 Application
控制器中
class ApplicationController < ActionController::Base
def require_admin
redirect_to '/' unless current_user.admin?
end
请问谁能告诉我为什么会出现这个错误
提前致谢!!!
current_user.try(:admin?)
这将检查当前用户是否存在
您收到此错误是因为您未登录,因此您的 current_user
方法 returns nil
.
确保 current_user 始终是一个用户实例,或者检查它是否不是 nil:
if current_user && current_user.admin?
您也可以使用 current_user.try(:admin?)
,如果 current_user 为 nil,它将自动失败。
这可能对您有所帮助
def require_admin
redirect_to '/' if current_user && current_user.admin?
end
检查您是否已登录您的应用程序并执行以下操作:
def require_admin
redirect_to root_path if current_user && current_user.admin?
end
您可以使用 root_path 重定向到您的主页,而不是写 redirect_to '/'。
我已经限制其他用户访问一个页面,但如果我没有登录并访问该页面,我会在行 redirect_to '/' unless current_user.admin?
但如果我登录并访问该页面,它工作正常。
在我的 Application
控制器中
class ApplicationController < ActionController::Base
def require_admin
redirect_to '/' unless current_user.admin?
end
请问谁能告诉我为什么会出现这个错误 提前致谢!!!
current_user.try(:admin?)
这将检查当前用户是否存在
您收到此错误是因为您未登录,因此您的 current_user
方法 returns nil
.
确保 current_user 始终是一个用户实例,或者检查它是否不是 nil:
if current_user && current_user.admin?
您也可以使用 current_user.try(:admin?)
,如果 current_user 为 nil,它将自动失败。
这可能对您有所帮助
def require_admin
redirect_to '/' if current_user && current_user.admin?
end
检查您是否已登录您的应用程序并执行以下操作:
def require_admin
redirect_to root_path if current_user && current_user.admin?
end
您可以使用 root_path 重定向到您的主页,而不是写 redirect_to '/'。