0

我正在尝试在我的 rails 应用程序上使用 CanCan。我遵循了我之前在其他项目中使用的相同教程并得到了这个工作。我的以下设置如下:

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

undefined method `role?' for nil:NilClass

这指向我的以下行application/layout.html.erb

  <% if @user.role? :administrator %>
4

2 回答 2

2

问题是它@user并不总是在每个控制器动作中定义,但是您的布局正在呈现在每个控制器动作上,因此@user有时会为空。要解决此问题,只需检查您的 if 语句中是否定义了 @user,如下所示:

<% if @user && @user.role?(:administrator) %>
于 2013-02-11T03:36:26.140 回答
0

问题是@user 方法似乎为零。并且根据 cancan 文档,它期望存在current_user方法,

而且我可以看到你已经注释掉了

before_filter :authenticate_user!,使其启用,以便创建当前用户,

并启用load_and_authorize_resource, for cancan 正常工作。

于 2013-02-11T03:56:26.167 回答