В Rails, есть ли способ использовать методы app / helpers / foo.rb в Controller против View? - PullRequest
3 голосов
/ 16 сентября 2010

Кажется, что эти помощники в app / helpers / foo.rb можно использовать в View, но нельзя использовать в Controller?

В некоторых случаях разные контроллеры могут использовать один и тот же метод, но просто передавать другой параметр, поэтому в таком случае не имеет ли смысла использовать помощника в контроллере?

Ответы [ 3 ]

3 голосов
/ 16 сентября 2010

Существует два основных способа повторного использования кода между контроллерами.

Вы можете создать подкласс ApplicationController, в котором есть общий код, а затем ваши контроллеры, которые хотят совместно использовать код, наследуют от нового класса контроллеров. (Или просто добавьте код в ApplicationController, если он необходим для всех контроллеров.)

В качестве альтернативы вы можете создавать свои собственные модули (это все сущности помощников) и включать их в контроллеры, в которых вы хотите использовать код.

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

1 голос
/ 16 сентября 2010

Как уже упоминалось выше, вы можете поместить общих помощников в ApplicationController или подкласс.Я бы добавил это, чтобы сделать их доступными и для представлений, которые вы помещаете в начало класса:

helper_method :foo
1 голос
/ 16 сентября 2010

Это может иметь смысл, но так не работает. (Если кто-то знает, как это сделать, пишите)

Вы можете поместить обычных помощников в ApplicationController, они будут доступны с любого контроллера в вашем приложении.

...