Ruby on Rails: метод глобального помощника для всех контроллеров
Как настроить метод, который я хочу получить со всех контроллеров?
Придерживание метода в application_helper просто делает его доступным для представлений
Ответы
Ответ 1
Вы можете include ApplicationHelper
в своих контроллерах (или базовом ApplicationController), чтобы сделать вспомогательные методы доступными.
Вы также можете включить следующую строку в свой ApplicationController, чтобы включить все помощники:
helper :all
Ответ 2
Вы можете добавить метод к ApplicationController
. Все остальные подклассы контроллеров ApplicationController
, поэтому смогут вызвать метод.
Вы хотите сделать метод protected
так, чтобы он был видимым только для подклассов и недоступен как действие, доступное в Интернете.
Ответ 3
Вставьте его в lib
. Помощники предназначены для использования в представлениях; если у вас есть библиотеки, специфичные для приложений (и под "библиотеками" я подразумеваю любой код, который использует ваше приложение, а "конкретным приложением" - все, что не принадлежит vendor
), lib
- это место, куда нужно идти.
Ответ 4
Вот очень хороший пример
http://railscasts.com/episodes/64-custom-helper-modules
Ответ 5
В рельсах 3 вы можете использовать: объект view_context в вашем контроллере для доступа к вспомогательным методам доступа. Например,
class ApplicationController < ActionController::Base
def some_method
view_context.some_view_helper_method
end
end
module ApplicationHelper
def some_view_helper_method
end
end
Проверьте это:
http://wowkhmer.com/2011/09/09/use-view-helper-methods-in-rails-3-controller/