Rails 3在Model中查看辅助方法

我的模型中有一个类方法,我需要从我的一个视图助手访问一个方法。 目前我include TalkHelper ,但我仍然得到NoM​​ethodError。

您可以在lib文件夹中放置帮助程序并将其包含在其中。 像这样:lib / some_helper.rb

 module SomeHelper def somedef #your code there end end 

在您的模型中,您可以执行以下操作:

 ApplicationController.helpers.your_helper_method 

要么

 YourController.helpers.your_helper_method 

最好的解决方案是重构代码,这样您就不需要从模型中调用视图助手代码了。 这不是RoR的方式。 正如其他人指出的那样,您可以将帮助程序代码解压缩到lib文件夹。

有关详细信息,请参阅此

http://railscasts.com/episodes/132-helpers-outside-views

如果您需要在类方法中使用帮助器,则需要对其进行extend ,而不是include它。

 module TalkHelper def woo; 'hoo' end end class MyClass extend TalkHelper def self.boo; woo end end MyClass.boo #=> 'hoo' 

请注意视图上下文之外的帮助程序,因为帮助程序可能依赖于controller或请求上下文中的其他内容,而这些内容在您的模型中不可用。