未定义的方法`角色?'为零:NilClass

时间:2013-02-11 03:14:13

标签: ruby-on-rails cancan

我正在尝试在我的rails应用程序上使用CanCan。我按照我之前在其他项目中使用的相同教程进行了操作。我的以下设置如下:

似乎当我尝试访问我的应用程序时,我得到了

undefined method `role?' for nil:NilClass

指向application/layout.html.erb

的以下行
  <% if @user.role? :administrator %>

2 个答案:

答案 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正常运行。