2011-12-21 5 views
3

У меня возник вопрос о наличии методов, определенных в app/helpers.Могу ли я использовать другие методы помощников в application_helper.rb?

Могу ли я использовать методы в помощниках (например, использовать методы, определенные в my_helper.rb, в application_helper.rb), или они ограничены видами?

ответ

3

Вы должны быть в состоянии сделать это, если у вас есть это в контроллере или application_controller:

helper :all 

Но это кажется немного слишком сложным, чтобы иметь помощников, которые требуют к другим помощникам, как правило, вспомогательные методы должны быть короткими простые и имеющие мало зависимостей, они должны делать одну простую вещь для каждого вида. Делает это труднее проверить, я полагаю, если у вас есть вспомогательные методы, которые обращаются к другим помощникам.

Если проблема, которую вы пытаетесь решить, достаточно сложна, я бы предложил попробовать переместить ее в модуль в каталоге lib, а затем включить этот модуль в хелперы, которым нужны общие функции.

+0

Я понимаю, что вызов помощника: все причины, в том числе application_helper.rb, все остальные помощники, а затем application_helper.rb добавляется к каждому представлению. Все методы во всех помощниках доступны во всех представлениях и каждом помощнике? –

+0

Вы пробовали? Либо он работает, либо он не работает. Иногда я включаю некоторые вспомогательные функции в мои классы контроллеров, такие как «включить MyFooHelper». Вы должны иметь возможность сделать это в любом классе, в котором хотите использовать помощника. – sunkencity

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