Метод helper_method
заключается в явном совместном использовании некоторых методов, определенных в контроллере, чтобы сделать их доступными для представления. Это используется для любого метода, к которому вам нужен доступ как из контроллеров, так и из помощников / представлений (стандартные вспомогательные методы недоступны в контроллерах). например, общий случай использования:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
helper
метод с другой стороны, для импорта всей помощницы взглядов , предоставляемых контроллером (и это наследуется контроллеры). Что это значит, делает
# application_controller.rb
helper :all
Для Rails> 3.1
# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off
делает все вспомогательные модули доступными для всех представлений (по крайней мере для всех контроллеров, унаследованных от application_controller.
# home_controller.rb
helper UserHelper
делает методы UserHelper доступными для представлений действий домашнего контроллера. Это эквивалентно выполнению:
# HomeHelper
include UserHelper
include UserHelper
находится вHomeHelper
модуле, а не в контроллере? AFAIK, просто включив вспомогательный модуль в контроллер, не поделится методами с представлениями.