Мне было интересно, почему кто-то должен использовать helper_method внутри контроллера для создания вспомогательного метода вместо создания «обычного» способа, который находится внутри вспомогательного файла. Каковы плюсы и минусы этого?
helper_method
полезен, когда функциональность используется как между контроллером, так и вид. Хороший пример - что-то вроде current_user
.
Если метод больше связан с логикой контроллера, а не с форматированием, то он принадлежит контроллеру. Что-то вроде current_user
будет совместно использоваться всеми контроллерами, поэтому оно должно быть определено в ApplicationController
.
Истинные «вспомогательные» методы имеют дело с представлением и обрабатывают такие вещи, как форматирование и логику шаблона. Они редко нужны в контроллере и принадлежат отдельному модулю в app / helpers. Вы можете включить их в свой контроллер, когда это необходимо, но в итоге вы получите весь модуль вспомогательных методов представления, доступных вашему контроллеру.