![](/img/trans.png)
[英]How to call an ApplicationHelper method in Mailer with Ruby on Rails 6
[英]How to include rails ApplicationHelper module in a regular Ruby Class
我在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的正确方法是什么?
问题不在于包括帮助程序,而在于访问会话。
在正常情况下, ApplicationHelper
会自动包含在所有控制器中,并且某些ActionView方法(包括session
)会委派给这种情况下存在的控制器 。
当包含在常规的红宝石类中时,没有controller
。 因此,对这些方法的任何调用都会引发错误,指出控制器为nil。
不确定为什么在常规的ruby类中需要会话信息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.