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