Ruby on Rails: метод глобального помощника для всех контроллеров
Как настроить метод, который я хочу получить со всех контроллеров?
Придерживание метода в application_helper просто делает его доступным для представлений
Ответ 1
Вы можете include ApplicationHelper в своих контроллерах (или базовом ApplicationController), чтобы сделать вспомогательные методы доступными.
Вы также можете включить следующую строку в свой ApplicationController, чтобы включить все помощники:
helper :all
Ответ 2
Вы можете добавить метод к ApplicationController. Все остальные подклассы контроллеров ApplicationController, поэтому смогут вызвать метод.
Вы хотите сделать метод protected так, чтобы он был видимым только для подклассов и недоступен как действие, доступное в Интернете.
Ответ 3
Вставьте его в lib. Помощники предназначены для использования в представлениях; если у вас есть библиотеки, специфичные для приложений (и под "библиотеками" я подразумеваю любой код, который использует ваше приложение, а "конкретным приложением" - все, что не принадлежит vendor), lib - это место, куда нужно идти.
В рельсах 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