0
我在Rails应用程序的lib目录中有一个类,我希望能够使用我在ApplicationHelper中从该类内部创建的帮助器。我有以下几点:如何在常规Ruby类中包含Rails ApplicationHelper模块
module ApplicationHelper
def works
"Yay!"
end
def breaks
session[:username]
end
end
class MyClass
include ApplicationHelper
end
以下工作
MyClass.new.works
这打破
MyClass.new.breaks
我得到一个消息Rails的尝试委托session
到controller.session
,但它不能做这是因为controller
是零。
什么是包含ApplicationHelper的正确方法?
我不认为ApplicationHelper“自动包含在所有控制器中”。 ApplicationHelper中的方法在所有视图中都可用,但如果从控制器类调用,则这些方法将导致错误。 在我的特殊情况下,我试图创建一个配置对象,该对象与已经定义的帮助器配合良好(为配置对象赋予更多的权力,并限制需要在2个位置定义方法)。 – CodeSmith 2015-04-10 02:35:32
我决定取消这个设计,并将我的配置类变成一个配置模块。我现在将我的配置模块包含到ApplicationHelper中,而不是试图将助手包含到我的课程中。我仍然想知道如何访问当前的控制器实例。我的配置对象是在application.html.erb布局文件中创建的。现在我想到了,我可以从当前视图获取控制器,并使用控制器初始化我的配置对象。这将会奏效。我仍然想知道是否有另一种方式。 – CodeSmith 2015-04-10 02:40:46