我的模型中有一个类方法,我需要从其中一个视图辅助程序中访问一个方法。目前我正在包含包括TalkHelper
,但是我仍然会收到NoMethodError。
我的模型中有一个类方法,我需要从其中一个视图辅助程序中访问一个方法。目前我正在包含包括TalkHelper
,但是我仍然会收到NoMethodError。
在您的模型中,您可以执行以下操作:
ApplicationController.helpers.your_helper_method
或者
YourController.helpers.your_helper_method
最佳解决方案是重构你的代码,使得你不需要从模型中调用视图助手代码。这不是RoR的做法。正如其他人所指出的那样,你可以将辅助代码提取到lib文件夹中。
查看此链接获取更多信息:
module SomeHelper
def somedef
#your code there
end
end
module
吗? - Tyler DeWittextend
而不是include
。module TalkHelper
def woo; 'hoo' end
end
class MyClass
extend TalkHelper
def self.boo; woo end
end
MyClass.boo #=> 'hoo'
在视图上下文之外使用帮助程序时要小心,因为帮助程序可能依赖于控制器或请求上下文中的其他内容,在您的模型中将无法使用。