2011-03-26 27 views
9

Tengo un formulario de comentarios en mi aplicación Rails. El formulario de comentarios requiere la inicialización de la variable @support, y debe estar visible en cada página. La inicialización es muy corto:Variable global en Rails

@support = Support.new(:id => 1) 

Sin embargo, sería bueno tener esta variable inicializada de una vez y acceder a él desde todas partes. ¿Cómo es eso posible?

Respuesta

5

Una variable global comienza con el signo dollard '$' como:

$support = Support.new(:id => 1) 

Sin embargo, las variables globales es malo :-) Debe leer este post por "Simone Carletti".

12

puede usar un método auxiliar (en el controlador de la aplicación) para inicializar la variable de soporte. Algo como esto:

class ApplicationController < .. 
    ... 
    helper_method :my_var 

    def my_var 
     @support = Support.new(:id => 1) 
    end 
    ... 

end 
+1

Este es definitivamente el camino a seguir. Tiene el beneficio adicional de no ser ejecutado a menos que lo necesite, mientras que un filtro anterior necesitará muchos filtros o será llamado incluso cuando no lo necesite. –

+0

Gracias Alan, ¡No quería confundir a los lectores! es por eso que no fui más allá :) – hkairi

5

En lugar de una variable global, es probable que desee poner algo en el ApplicationController.

O bien:

before_filter initialize_support 

def initialize_support 
     @support = Support.new(:id => 1) 
end 

O:

helper_method support_form 

def support_form 
     @support_form ||= Support.new(:id => 1) 
end