我有很多小实用工具方法(例如重新格式化或解析像字符串这样的简单对象)我一直在使用ApplicationHelper。
但是,模型中的类方法显然无法访问ApplicationHelper方法。
有一个解决方法,就是在我的项目中撒上:
include ApplicationHelper # needed to use apphelper method in instance method
extend ApplicationHelper # needed to use apphelper method in class method
它似乎有效。但它似乎是一块垃圾。
有没有更好的地方放置实用程序方法,以便可以从我的项目中的任何位置访问它们 - 视图,控制器方法,模型实例方法,模型类方法?
答案 0 :(得分:5)
这是lib/
的用途。我的文件位于lib/deefour.rb
require "deefour/core_ext"
module Deefour; end
我在lib/deefour/helpers.rb
module Deefour
module Helpers
extend self
def some_method
# ...
end
end
end
和lib/deefour/core_ext.rb
class String
def my_custom_string_method(str)
# ...
end
end
在config/initializers/deefour.rb
我放
require "deefour"
在config/application.rb
中确保您拥有
config.autoload_paths += Dir["#{config.root}/lib"]
最后,在ApplicationController
(对于控制器),ApplicationHelper
(对于观看次数),以及我需要的其他地方(即。这里和那里的特定模型)我只是做
include ::Deefour::Helpers