Как настроить метод, доступный для всех контроллеров?Ruby on Rails: метод глобального помощника для всех контроллеров
Вставлять метод в application_helper только делает его доступным для взглядов
Как настроить метод, доступный для всех контроллеров?Ruby on Rails: метод глобального помощника для всех контроллеров
Вставлять метод в application_helper только делает его доступным для взглядов
Вы можете include ApplicationHelper
в контроллерах (или базовой ApplicationController), чтобы сделать вспомогательные методы доступны.
Вы можете также включить следующую строку в ApplicationController включить все хелперы:
helper :all
Я не включил ApplicationHelper, но то, что вы сказали, позволило мне создать shared.rb в приложении/контроллерах/ – DerNalia
приклейте его в lib
. Помощники предназначены для использования в представлениях; если у вас есть библиотеки, специфичные для приложений (и под «библиотеками» я подразумеваю любой код, который использует ваше приложение, а «по конкретным приложениям» - все, что не принадлежит vendor
), lib
- это место, куда можно пойти.
Вы можете добавить этот метод к ApplicationController
. Все остальные подклассы контроллеров ApplicationController
, поэтому смогут вызвать метод.
Вы должны сделать метод protected
так, чтобы он был видимым только для подклассов и недоступен в качестве действия, доступного в Интернете.
это отличный подход! + 500 –
Вот очень хороший пример
В рельсах 3 вы можете использовать: view_context объекта в контроллере для доступа к методам View Helper. Например,
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/
вот другой пример: http://stackoverflow.com/questions/1179865/why-are-all-rails- helpers-available-to-all-views-all-time-is-there-a-way-t – 2013-05-14 14:00:52