Я помещаю помощников, подобных тем, которые вы описываете, в модуль в моем каталоге lib/
. Учитывая некоторое MyApp
приложение, это будет идти в app/lib/my_app/helpers.rb
и выглядеть как
module MyApp
module Helpers
extend self
def some_method
# ...
end
end
end
Затем вы должны потребовать этот модуль. Создайте новый инициализатор в config/initializers/my_app.rb
, который выглядит как
require 'my_app'
и убедитесь, что config.autoload_paths
содержит ваш каталог lib/
в config/application.rb
.
config.autoload_paths += Dir["#{config.root}/lib",
# other paths here...
]
Наконец, включите модуль везде, где вы хотите его использовать. Где.
app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
include MyApp::Helpers
app/helpers/application_helper.rb
module ApplicationHelper
include MyApp::Helpers
Я думаю, что это более чистый и более проверяемый подход к управлению повторно используемыми помощниками в вашем приложении.
person
deefour
schedule
13.09.2013