我在Rails应用程序的lib目录中有一个类,我希望能够在该类中使用我在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的正确方法是什么?
答案 0 :(得分:0)
问题不在于包含帮助程序,而在于访问会话。
在正常情况下,ApplicationHelper
会自动包含在所有控制器中,some of the ActionView methods - including session
- are delegated to the controller会出现在这种情况下。
当包含在普通的ruby类中时,没有controller
;所以对这些方法的任何调用都会抛出一个错误,说控制器是零。
不确定为什么在普通的ruby类中需要会话信息。