我正在尝试在我的rails应用程序上使用CanCan。我按照我之前在其他项目中使用的相同教程进行了操作。我的以下设置如下:
似乎当我尝试访问我的应用程序时,我得到了
undefined method `role?' for nil:NilClass
指向application/layout.html.erb
<% if @user.role? :administrator %>
答案 0 :(得分:2)
问题是@user
并不总是在每个控制器操作中定义,但是您的布局是在每个控制器操作上呈现的,因此@user
有时会为空。要解决此问题,只需检查if语句中是否定义了@user,如下所示:
<% if @user && @user.role?(:administrator) %>
答案 1 :(得分:0)
问题是@user方法似乎是零。根据康康文档,它希望存在current_user方法,
我也可以看到你已经注释掉了
before_filter :authenticate_user!,启用它以便创建当前用户
并启用load_and_authorize_resource
,以便cancan正常运行。