jpw*_*ynn 3 ruby-on-rails helper
我有很多实用工具方法(例如用于重新格式化或解析诸如字符串之类的简单对象)的方法,我一直将它们放在ApplicationHelper中。
但是,显然模型中的类方法无法访问ApplicationHelper方法。
有一个解决方法,可以在我的整个项目中使用:
include ApplicationHelper # needed to use apphelper method in instance method
extend ApplicationHelper # needed to use apphelper method in class method
Run Code Online (Sandbox Code Playgroud)
而且似乎可行。但这似乎是一种矛盾。
有没有更好的放置实用程序方法的地方,以便可以从项目的任何位置访问它们-视图,控制器方法,模型实例方法,模型类方法?
这lib/是为了什么。我有一个文件在lib/deefour.rb与
require "deefour/core_ext"
module Deefour; end
Run Code Online (Sandbox Code Playgroud)
我把自定义方法 lib/deefour/helpers.rb
module Deefour
module Helpers
extend self
def some_method
# ...
end
end
end
Run Code Online (Sandbox Code Playgroud)
和核心猴子补丁 lib/deefour/core_ext.rb
class String
def my_custom_string_method(str)
# ...
end
end
Run Code Online (Sandbox Code Playgroud)
在config/initializers/deefour.rb我把
require "deefour"
Run Code Online (Sandbox Code Playgroud)
在你config/application.rb确保你有
config.autoload_paths += Dir["#{config.root}/lib"]
Run Code Online (Sandbox Code Playgroud)
最后,在ApplicationController (对于控制器),ApplicationHelper (对于视图)以及我需要的其他地方(即,这里和那里的特定模型)中,我只需
include ::Deefour::Helpers
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
460 次 |
| 最近记录: |