Что делают помощники и helper_method?

helper_method прост: он делает доступными некоторые или все методы контроллера для представления.

Что такое helper? Разве это наоборот, т.е. Импортирует вспомогательные методы в файл или модуль? (Возможно, имя helper и helper_method одинаково. Вместо этого они могут быть share_methods_with_view и import_methods_from_view)

ссылка

Ответ 1

Метод 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