2010-06-17 2 views
16

Как настроить метод, доступный для всех контроллеров?Ruby on Rails: метод глобального помощника для всех контроллеров

Вставлять метод в application_helper только делает его доступным для взглядов

+0

вот другой пример: 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

ответ

14

Вы можете include ApplicationHelper в контроллерах (или базовой ApplicationController), чтобы сделать вспомогательные методы доступны.

Вы можете также включить следующую строку в ApplicationController включить все хелперы:

helper :all
+0

Я не включил ApplicationHelper, но то, что вы сказали, позволило мне создать shared.rb в приложении/контроллерах/ – DerNalia

7

приклейте его в lib. Помощники предназначены для использования в представлениях; если у вас есть библиотеки, специфичные для приложений (и под «библиотеками» я подразумеваю любой код, который использует ваше приложение, а «по конкретным приложениям» - все, что не принадлежит vendor), lib - это место, куда можно пойти.

34

Вы можете добавить этот метод к ApplicationController. Все остальные подклассы контроллеров ApplicationController, поэтому смогут вызвать метод.

Вы должны сделать метод protected так, чтобы он был видимым только для подклассов и недоступен в качестве действия, доступного в Интернете.

+0

это отличный подход! + 500 –

0

В рельсах 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/

Смежные вопросы