0

我想根据当前用户是否是管理员来更改我的布局。所以我做了一个简单的方法来检查当前用户是否是管理员,然后我在应用程序控制器中调用该方法。我不断收到以下错误:

undefined method `is_admin?' for ApplicationController:Class

我的代码如下所示:

class ApplicationController < ActionController::Base
  protect_from_forgery

  helper_method :current_user, :is_admin?


  if is_admin?
   layout 'admin'
  end

  .....

  protected

  .....

  def is_admin?
    if current_user.user_role == 'admin'
      return true
    end
  end

end

我应该怎么做?

谢谢

4

1 回答 1

1

您当前拥有它的方式is_admin?是在加载类时运行,并且在类范围内执行(因此是异常,因为它不是类方法)。在请求过程中,您需要在实例方法中检查管理员状态。

要做你想做的事情,你可以让布局调用一个实例方法,例如

layout :determine_layout

protected

# return "admin" for the layout if `is_admin?`, otherwise "application"
def determine_layout
  is_admin? ? 'admin' : 'application'
end

编辑:一些可能有用的链接:

于 2012-12-13T05:05:35.773 回答