【发布时间】: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