访问自定义帮助
问题描述:
我写了一个小帮手方法在我的ApplicationController是这样的:访问自定义帮助
helper_method :dehumanize
def dehumanize (string)
string.parameterize.underscore
end
现在,我想在我的模型文件一个使用它,但它似乎没有可用那里。
我也试图与:
ApplicationController.dehumanize(title)
模型
,但它不工作。
如何使它在那里工作的任何线索?
感谢,
答
模型一般不能/不/不应该访问控制器方法(MVC惯例),但你写不控制器必然属于反正方法 - 它将会更好地作为字符串类的扩展。
我建议你写一个初始化加dehumanize
到String
:
\config\initializers\string_dehumanize.rb
class String
def dehumanize
self.parameterize.underscore
end
end
您将需要重新启动服务器/控制台,但那么你就可以在任何字符串调用.dehumanize
:
some model:
def some_method
string1 = 'testing_the_method'
string1.dehumanize
end
答
Matt
的答案是完全正确的,但为了给你一些澄清,你想确保你打电话给你的方法objects
/instances
,而不是cla的SSE自己
例如,你提到你尝试过这样的:
ApplicationController.dehumanize(title)
这不会有任何效果,因为它调用上未初始化的类中的方法,更何况类没有这个方法。基本上,如果你称这种方法,你会期望什么?
做到这一点的方法是使用的方法Matt
推荐,或使用你的模型本身就是一个类的方法,这将允许您调用模型的直接方法:
#app/models/model.rb
class Model < ActiveRecord::Base
def self.dehumanize string
string.parameterize.underscore
end
end
# -> Model.dehumanize title
+1想出来的盒子 –