Il metodo helper_method
è quello di condividere in modo esplicito alcuni metodi definiti nel controller per renderli disponibili per la vista. Viene utilizzato per qualsiasi metodo che è necessario accedere da entrambi i controller e gli helper/view (i metodi di supporto standard non sono disponibili nei controller). per esempio. caso di utilizzo comune:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
il metodo helper
invece, è per importare un intero supporto per le viste fornite dal controller (e ereditato controller). Ciò significa sta facendo
# application_controller.rb
helper :all
Per 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
rende tutti i moduli di supporto disponibili per tutte le viste (almeno per tutti i controller che eredita da application_controller.
# home_controller.rb
helper UserHelper
fa la Metodi UserHelper disponibili per le visualizzazioni per le azioni del controller di casa. Questo equivale a fare:
# HomeHelper
include UserHelper
In Rails> = 3.1, "helper: all" nel controller dell'applicazione viene sostituito dall'impostazione di configurazione "include_all_helpers" in application.rb. Vedi http://stackoverflow.com/questions/1179865/. –
@Jeremy So che questo post è vecchio, ma ben detto. Mi ha aiutato! –
C'è una differenza tra l'uso di "helper" e "include" oltre ad un semplice zucchero sintattico. "helper" rende il modulo denominato disponibile per le viste e solo per le viste. "include" rende il modulo nominato disponibile per le viste e per i controller. Entrambi hanno impatto sui controller ereditati e sulle loro viste. –