me he creado un array global en el fichero application.rb (no esta
dentro de ninguna función) porque quiero que todas los controladores
tengan acceso, luego en la vista intento mostrar el contenido de este
array pero me da el error de que el objeto esta vacio y si q tiene
contenido.
Mi duda es la siguiente, es necesario indicar algo en el controlador
para que reconozca la variable global? o no harÃa falta?
On Nov 30, 2007, at 11:26 AM, Melisa Fernández wrote:
me he creado un array global en el fichero application.rb (no esta
dentro de ninguna función) porque quiero que todas los controladores
tengan acceso, luego en la vista intento mostrar el contenido de
este array pero me da el error de que el objeto esta vacio y si q
tiene contenido.
Mi duda es la siguiente, es necesario indicar algo en el controlador
para que reconozca la variable global? o no haría falta?
Puedes explicar un poco mas en que sentido es global, como lo estas
definiendo en Ruby, y cual es su proposito?
Se supone (creo) q de esta forma tengo acceso a todo su contenido por lo
tanto no me harÃa falta hacer ninguna instancia de la variable en la
vista o en el controlador pudiendo utilizarla por ejemplo en la vista de
esta forma:
<%= debug(@comb)%>
Pero no me muestra ningún contenido. Es necesario indicar en el
controlador que quiero utilizar esta variable?
he usado lo que has comentado y funciona correctamente, pero no entiendo
muy bien su funcionamiento. Environment.rb no se utiliza para
configuraciones de la aplicación?
Si es una “variable” que utilizas en toda la aplicación es “correcto”
que esté allí y que se cargue al arrancar la aplicación. De hecho,
incluso se puede mejorar i utilizar un fichero “yml” donde almacenar
este tipo de “variables”. De esta manera podriamos cargar los datos
segun el entorno donde estamos ejecutando la aplicación (desarrollo,
testeo, stagging, producción …)
Un saludo,
Francesc
On Nov 30, 2007, at 1:13 PM, Melisa Fernández wrote:
Date: Fri, 30 Nov 2007 12:27:00 +0100
estas en Rails Edge o RC2.
Francesc
Estoy con Javier. Me gustarÃa disuadirte del uso de variables globales,
te pongo un ejemplo con before_filter: Imaginate que en un catalogo
recuperas siempre el las imagenes asociadas a un id del catalogo.
@images = Catalog.find([:id]).all_images
y esto lo haces en casi todos los metodos de tu controllador.
Te puedes crear un metodo que se llame load_images
def load_images
@images = Catalog.find([:id]).all_images
end
en la parte superior del controllador:
before_filter :load_images, :except =>
[:metedos, :que, :necesiten, :imagenes]
me tiene mejor pinta que andar con variables globlales (en la carrera
un práctica con variables globales era motivo de suspeneso, o eso
decÃan)
que esté allí y que se cargue al arrancar la aplicación. De hecho,
incluso se puede mejorar i utilizar un fichero “yml” donde almacenar
este tipo de “variables”. De esta manera podriamos cargar los datos
en Rails 2 ya hay una forma organizada para dejar la
configuración organizada en diferentes ficheros. Se trata de meter tu configuración en
ficheros dentro del directorio config/initializers. Rails se encarga de
cargar todos esos al terminar de procesar la inicialización del
environment.
No he mirado si hay alguna manera de marcar dependencias entre los
diferentes initializers ni si se pueden indicar initializers separados
según tu variable environment, pero aún así te deja bastante limpio el
fichero de environment.