Die Methode helper_method
besteht darin, einige im Controller definierte Methoden explizit freizugeben, um sie für die Ansicht verfügbar zu machen. Dies wird für alle Methoden verwendet, auf die Sie sowohl von Controllern als auch von Helfern / Ansichten aus zugreifen müssen (Standard-Hilfsmethoden sind in Controllern nicht verfügbar). zB häufiger Anwendungsfall:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
Die helper
Methode hingegen besteht darin, einen gesamten Helfer in die vom Controller bereitgestellten Ansichten (und die geerbten Controller) zu importieren. Was dies bedeutet, ist zu tun
# application_controller.rb
helper :all
Für Schienen> 3.1
# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off
stellt alle Hilfsmodule allen Ansichten zur Verfügung (zumindest für alle Controller, die von application_controller erben.
# home_controller.rb
helper UserHelper
stellt die UserHelper-Methoden Ansichten für Aktionen des Home-Controllers zur Verfügung. Dies ist gleichbedeutend mit:
# HomeHelper
include UserHelper
include UserHelper
imHomeHelper
Modul befindet und nicht im Controller? AFAIK, das einfach das Hilfsmodul in die Steuerung einbezieht, teilt die Methoden nicht mit Ansichten.