未定义的方法“管理员?” 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 '/'。