2010-06-17 11 views
16

¿Cómo configuro un método al que deseo acceder desde todos los controladores?Ruby on Rails: método Global Helper para todos los controladores

pegarse el método de application_helper sólo lo hace disponible para las vistas

+0

aquí es otro ejemplo: http://stackoverflow.com/questions/1179865/why-are-all-rails- helpers-available-to-all-views-all-the-time-is-there-a-way-t –

Respuesta

14

Puede include ApplicationHelper en sus controladores (o ApplicationController base) para hacer que los métodos de ayuda disponibles.

También puede incluir la siguiente línea en su ApplicationController para incluir todos los ayudantes:

helper :all
+0

No incluí ApplicationHelper, pero lo que dijiste me permitió crear un shared.rb en la aplicación/controladores/ – DerNalia

7

meterlo en lib. Los ayudantes están destinados a ser utilizados en las vistas; si tiene bibliotecas específicas de la aplicación (y con "bibliotecas" me refiero a cualquier código que use su aplicación, y por "específico de la aplicación" cualquier cosa que no pertenezca al vendor), lib es el lugar indicado.

34

Puede agregar el método a ApplicationController. Todos los demás controladores de la subclase ApplicationController, por lo que podrán llamar al método.

Querrá hacer el método protected para que solo sea visible para las subclases y no esté disponible como una acción accesible a través de la web.

+0

este es un gran enfoque! + 500 –

0

En los carriles 3 se puede utilizar: el objeto view_context en su controlador para acceder a métodos ayudante de vista. Por ejemplo,

class ApplicationController < ActionController::Base 
    def some_method 
    view_context.some_view_helper_method 
    end 
end 

module ApplicationHelper 
    def some_view_helper_method 
    end 
end 

Salida esto: http://wowkhmer.com/2011/09/09/use-view-helper-methods-in-rails-3-controller/