voz quitar por oye google dictado desactivar como busqueda asistente activar ruby-on-rails ruby helpers

ruby on rails - quitar - ¿Por qué todos los ayudantes de Rails están disponibles para todas las vistas, todo el tiempo? ¿Hay alguna forma de desactivar esto?



desactivar ok google 2018 (4)

¿Por qué puedo acceder a los métodos de ayuda para un controlador en las vistas de un controlador diferente? ¿Hay alguna manera de desactivar esto sin hackear / reparar Rails?


De hecho, en Rails 2 , la funcionalidad predeterminada de ActionController :: Base era incluir todos los ayudantes.

Changeset 6222 el 24/02/07 20:33:47 (hace 3 años) por dhh : Hacer una suposición predeterminada de que quieres todos los ayudantes, todo el tiempo (sí, sí)

cambio:

class ApplicationController < ActionController::Base helper :all # include all helpers, all the time end

A partir de Rails 3 beta 1, ese ya no es el caso como se indica en CHANGELOG:

  • Agregó que ActionController :: Base ahora hace helper: all en lugar de depender del ApplicationController predeterminado en Rails para hacerlo [DHH]

El método de @George Schreiber no funciona a partir de Rails 3.1; el código ha cambiado significativamente.

Sin embargo, ahora hay una forma aún mejor de desactivar esta función en Rails 3.1 (y con suerte más adelante). En su config / application.rb, agregue esta línea:

config.action_controller.include_all_helpers = false

Esto evitará que ApplicationController cargue todos los helpers .

(Para cualquiera que esté interesado, aquí está la solicitud de extracción donde se creó la función ).


En Rails 3, actioncontroller/base.rb (alrededor de la línea 224):

def self.inherited(klass) super klass.helper :all if klass.superclass == ActionController::Base end

Entonces sí, si deriva su clase de ActionController::Base , se incluirán todos los ayudantes.

Para clear_helpers esto, llame a clear_helpers ( AbstractClass::Helpers ; incluido en ActionController::Base ) al comienzo del código de su controlador. Comentario del código fuente para clear_helpers:

# Clears up all existing helpers in this class, only keeping the helper # with the same name as this class.

P.ej:

class ApplicationController < ActionController::Base clear_helpers ... end


La respuesta depende de la versión de Rails.

Rieles> = 3.1

Cambia la configuración de include_all_helpers a false en cualquier entorno donde quieras aplicar la configuración. Si desea que la configuración se aplique a todos los entornos, cámbiela en application.rb .

config.action_controller.include_all_helpers = false

Cuando es falso, omitirá la inclusión .

Rieles <3.1

Elimine la siguiente línea de ApplicationController

helper :all

De esta forma, cada controlador cargará sus propios ayudantes.