【问题标题】:Undefined method logged_in? Ruby on Rails未定义的方法logged_in? Ruby on Rails
【发布时间】:2016-12-15 20:51:17
【问题描述】:

我无法理解这一点(但我可能是个白痴)。我有一个类ApplicationController,其中包含以下方法:

def logged_in?
  !current_user.nil?
end

if logged_in?
  load_and_authorize_resource :unless => :devise_controller?, :except => :show
end

这给了我一个错误:

未定义的方法`logged_in?'对于 ApplicationController:Class

这个方法是明确定义的,怎么又是未定义呢?

【问题讨论】:

  • 如果你在顶层调用它(你在定义它之后立即调用它)你是在类级别调用它,而不是在实例级别。你已经定义了一个实例方法;它在实例之外不可用。
  • 所以,你有 ApplicationController 类,在里面你有这 6 行代码?,你是怎么发布它们的?,我的意思是,'如果已登录?'行出现在“def logged_in”的“结束”之后?方法?。如果是这样,你做错了。 '如果已登录?代码需要在您的方法内部使用,而不是在外部使用。您使用方法之外的代码来执行某种元编程来定义其他方法等。
  • @123 你还有这个问题吗?我今天解决了一个类似的问题

标签: ruby-on-rails ruby devise cancan


【解决方案1】:

我想你忘了写:

helper_method :logged_in?

ApplicationController.

【讨论】:

    【解决方案2】:

    也许声明它的最佳位置是/helpers/application_helper.rb,而不是 application_controller。

    此外,为了验证用户是否登录,Devise 提供了以下帮助程序user_signed_in?

    来源:https://github.com/plataformatec/devise

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-21
      • 1970-01-01
      • 2019-10-31
      • 2018-07-06
      • 2012-09-25
      • 1970-01-01
      相关资源
      最近更新 更多