El método helper_method
es compartir explícitamente algunos métodos definidos en el controlador para que estén disponibles para la vista. Esto se usa para cualquier método al que necesite acceder tanto desde controladores como desde helpers/views (los métodos de ayuda estándar no están disponibles en los controladores). p.ej. caso de uso común:
#application_controller.rb
def current_user
@current_user ||= User.find_by_id!(session[:user_id])
end
helper_method :current_user
el método helper
por otro lado, es para la importación de un ayudante entero a las vistas proporcionadas por el controlador (y es controladores hereditaria). Lo que esto significa es hacer
# application_controller.rb
helper :all
para los carriles> 3,1
# application.rb
config.action_controller.include_all_helpers = true
# This is the default anyway, but worth knowing how to turn it off
hace que todos los módulos auxiliares disponibles a todos los puntos de vista (al menos para todos los controladores que hereda de application_controller.
# home_controller.rb
helper UserHelper
hace que el Métodos de UserHelper disponibles para vistas para acciones del controlador doméstico. Esto es equivalente a hacerlo:
# HomeHelper
include UserHelper
En Rails> = 3.1, 'helper: all' en el controlador de la aplicación se reemplaza por la configuración 'include_all_helpers' en application.rb. Ver http://stackoverflow.com/questions/1179865/. –
@Jeremy Sé que esta publicación es antigua, pero está bien dicha. ¡Me ayudó! –
Hay una diferencia entre usar "ayuda" e "incluir" más allá de un simple azúcar sintáctico. "helper" hace que el módulo nombrado esté disponible para las vistas y solo para las vistas. "incluir" hace que el módulo nombrado esté disponible para las vistas y los controladores. Ambos impactan controladores heredados y sus puntos de vista. –