Metoda helper_method
polega na jawnym udostępnieniu niektórych metod zdefiniowanych w kontrolerze, aby były dostępne dla widoku. Jest to używane w przypadku każdej metody, do której musisz uzyskać dostęp zarówno z kontrolerów, jak i pomocników / widoków (standardowe metody pomocnicze nie są dostępne w kontrolerach). np. typowy przypadek użycia:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
z helper
drugiej strony metoda służy do importowania całego pomocnika do widoków udostępnianych przez kontroler (i jego odziedziczone kontrolery). Co to znaczy robić
# application_controller.rb
helper :all
Dla szyn> 3.1
# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off
udostępnia wszystkie moduły pomocnicze dla wszystkich widoków (przynajmniej dla wszystkich kontrolerów dziedziczących po application_controller.
# home_controller.rb
helper UserHelper
udostępnia metody UserHelper w widokach dla akcji kontrolera domowego. Jest to równoważne z robieniem:
# HomeHelper
include UserHelper
include UserHelper
znajduje się wHomeHelper
module, a nie w kontrolerze? AFAIK, po prostu dołączenie modułu pomocniczego do kontrolera nie będzie współużytkować metod z widokami.