Sobre controladores

Hola, estoy enpezando con Rails, y me surge una duda sobre los
controladores. Segun parece, des de un controlador puedo acceder y
hacer referencia a cualquier Modelo que tenga definido en app/models?
Es eso asi?
Ah, y sobre el modelo… más que un modelo seco (un Pojo de Java,
vamos), lo que hay en /models son DAOs no? Quiero decir la capa de
acceso a la BBDD.
Hasta ahora habia usado Java con Spring y Hibernate, y al empezar
con Rails, me da la impresión que todo está hecho muy “a saco”, no se
si me explico O:)

Hola muchacho, tengo lo siguiente

<%= link_to ‘Eliminar’, { :action => ‘destroy’, :id => 0 },
:confirm => “¿Está Ud. seguro de elminar ‘dominio’?” %>

pero la ventanita alert no “agarra” bien ni el ¿ ni tampoco las
tildes…ya probé con el código ascii, con el acento normal, con el
acute…busqué en google y nada nuevo… también probe agregando esta
linea en el head

y nada… saludos!

On 17/01/07, [email protected] [email protected]
wrote:

Hola muchacho, tengo lo siguiente

<%= link_to ‘Eliminar’, { :action => ‘destroy’, :id => 0 },
:confirm => “¿Está Ud. seguro de elminar ‘dominio’?” %>

¿En qué codificación estás salvando las plantillas? Deberías salvarlas
(y todo lo demás) en utf-8. Escribe el texto normal, sin entities.

Después, asegúrate de que las páginas se están sirviendo como utf-8 y
no deberías tener problemas.


Manuel
http://linkja.com * un agregador de tendencias
http://simplelogica.net
simplelogica.net

El Miércoles, 17 de Enero de 2007 20:10, Dani P.
escribió:> Hola, estoy enpezando con Rails, y me surge una duda sobre los

controladores. Segun parece, des de un controlador puedo acceder y
hacer referencia a cualquier Modelo que tenga definido en app/models?
Es eso asi?

Sí.

Ah, y sobre el modelo… más que un modelo seco (un Pojo de Java,
vamos), lo que hay en /models son DAOs no? Quiero decir la capa de
acceso a la BBDD.

No exactamente. Por lo general son clases persistentes, pero puedes
tener
clases no persistentes (que no hereden de ActiveRecord::Base).

Hasta ahora habia usado Java con Spring y Hibernate, y al empezar
con Rails, me da la impresión que todo está hecho muy “a saco”, no se
si me explico O:)

Si te refieres a que las cosas son tan sencillas como deberían, pues
sí.
Dos principios de Rails son el DRY (Don’t Repeat Yourself) y
convención frente
a configuración. Y, con esas ideas en mente, todo se simplifica mucho.

Desarrollar tu esquema de base de datos, escribir tu clases (con sus
métodos “setter” y “getter”) y rematarlo todo con un fichero XML parece
complicarse un poco la vida, ¿no? :wink:

Bienvenido.

2007/1/17, Imobach González Sosa [email protected]:

El Miércoles, 17 de Enero de 2007 20:10, Dani P. escribió:

Hola, estoy enpezando con Rails, y me surge una duda sobre los
controladores. Segun parece, des de un controlador puedo acceder y
hacer referencia a cualquier Modelo que tenga definido en app/models?
Es eso asi?

Curioso, que chulo. Y asi, el tema de la visibilidad, como funciona?
Porque en Java (y otros lenguages), tienes que usar
“import”/“include”/“use”, etc… O sea, dentro de una misma
aplicacion, sobre que clases tengo acceso y sobre cuales no? Y como lo
controlo?

Dos principios de Rails son el DRY (Don’t Repeat Yourself) y convención frente
a configuración. Y, con esas ideas en mente, todo se simplifica mucho.

Desarrollar tu esquema de base de datos, escribir tu clases (con sus
métodos “setter” y “getter”) y rematarlo todo con un fichero XML parece
complicarse un poco la vida, ¿no? :wink:

Si y no. Creo que todo debe usarso en su justa medida. Rails esta
bien porque viene a hacer lo mismo, pero mucho mas simplificado. Lo
que no me acaba de convencer es lo de la convencion de usar nombres en
singular para las clases, y plurales para las tablas, y Rails que
“adivine”. Incluso puede buscar la tabla “People” para la clase
“Person”. Creo que eso es pasarse.
Pero bueno, al final siempre puedes especificar tu el nombre de la
tabla, y todo eso no? Eso es bueno!.

On 18/01/07, Dani P. [email protected] wrote:

Si y no. Creo que todo debe usarso en su justa medida. Rails esta
bien porque viene a hacer lo mismo, pero mucho mas simplificado. Lo
que no me acaba de convencer es lo de la convencion de usar nombres en
singular para las clases, y plurales para las tablas, y Rails que
“adivine”. Incluso puede buscar la tabla “People” para la clase
“Person”. Creo que eso es pasarse.
Pero bueno, al final siempre puedes especificar tu el nombre de la
tabla, y todo eso no? Eso es bueno!.

Sí, casi todas las convenciones de Rails pueden modificarse, aunque en
general yo encuentro un placer adormecedor en entregarme a esas
convenciones siempre que puedo y dejarme arrastrar por el ‘simplemente
funciona’, con la tranquilidad de que en cualquier momento me puedo
poner al volante. Es parecido a dejarse llevar por el GPS, sabiendo
que si la ruta que me indica no es la que más me conviene puedo
recuperar el control.

No sé si conoces un artículo comparativo entre Hibernate y
ActiveRecord (1) Si no recuerdo mal, el autor de Hibernate se
convirtió pronto en un gran fan de Rails/AR

(1)
http://www.theserverside.com/tt/articles/article.tss?l=RailsHibernate


Manuel
http://linkja.com * un agregador de tendencias
http://simplelogica.net
simplelogica.net

El Jueves, 18 de Enero de 2007 10:31, Dani P.
escribió:> controlo?
Desde los controladores puedes acceder a todos tus modelos sin
especificar
nada. Ya lo hace Rails por ti :wink:

singular para las clases, y plurales para las tablas, y Rails que
“adivine”. Incluso puede buscar la tabla “People” para la clase
“Person”. Creo que eso es pasarse.
Pero bueno, al final siempre puedes especificar tu el nombre de la
tabla, y todo eso no? Eso es bueno!.

Bueno, como te comentan por ahí, las convenciones de Rails te las puedes
saltar si quieres. De hecho, si no quieres usar plurales (y no tener que
andar especificando el nombre de las tablas para cada modelo), puedes
cambiar
la configuración de ActiveRecord poniendo la siguiente línea en
environment.rb (en el bloque del Rails::Initializer.run):

config.active_record.pluralize_table_names = false

Espero que te resulte útil.

Un saludo.


Imobach González Sosa
imobachgs en banot punto net
osoh en jabberes punto org

El confirm es un comando de JavaScript, por lo cual los acentos los
tendrás
que escribir sin los códigos HTML.

2007/1/17, Manuel González Noriega [email protected]:

On Jan 18, 2007, at 11:31 AM, Dani P. wrote:

Curioso, que chulo. Y asi, el tema de la visibilidad, como funciona?
Porque en Java (y otros lenguages), tienes que usar
“import”/“include”/“use”, etc… O sea, dentro de una misma
aplicacion, sobre que clases tengo acceso y sobre cuales no? Y como lo
controlo?

En Java los imports son sintacticos, su funcion tiene que ver tan
solo con la resolucion de nombres en el archivo que los contiene, en
tiempo de compilacion.

En Ruby la cosa es distinta.

require ‘foo’

hace que se interprete el fichero “foo.rb”, supuesto que este en el
arbol de busqueda de librerias, y generalmente la ejecucion tiene
como efecto secundario la definicion de modulos y clases en la
maquina virtual.

Una vez definida una clase, la constante asociada (Person) es visible
globalmente en todos los archivos interpretados a continuacion, ya
carguen “foo.rb” o no. Por ejemplo si a.rb carga b.rb, y un script
requires ‘a’, lo que b.rb define es visible en el script.

Si una clase no se ha definido todavia, salta una excepcion:

fxn@feynman:~$ ruby -e ‘Foo.x’
-e:1: uninitialized constant Foo (NameError)

Observa que tan solo se queja de que la constante no esta
inicializada, no dice ClassNotFoundException. Bien, existe un hook en
Ruby que permite interceptar esa situacion, es Module#const_missing.
Rails usa ese hook para hacer requires on-demand asumiendo una
convencion de nombres que establece como deberia llamarse el archivo
que define tal constante. Por ejemplo el archivo que define Person
por convenio debe llamarse person.rb y hallarse en alguno de los
directorios que Rails mete en LOAD_PATH (app/controllers, app/models,
etc.).

Es por eso que si te adhieres a ese convenio no hacen falta requires
en Rails.

Ademas, esto tiene un penalty minimo, porque todo ese tinglado sucede
tan solo la primera vez que se encuentra una referencia a la
constante. Una vez interpretado person.rb, la constante Person ya
esta definida y no salta ya mas const_missing.

– fxn

Hola Dani, lo mejor es que aclares los conceptos sobre esto del patrón
Modelo-Vista-Controlador en la wikipedia, por ejemplo:

Y con los libros de Rails, claro…

Jaime I.
[email protected]

El mié, 17-01-2007 a las 21:10 +0100, Dani P. escribió:

2007/1/18, Imobach González Sosa [email protected]:

Desde los controladores puedes acceder a todos tus modelos sin especificar
nada. Ya lo hace Rails por ti :wink:

Pero y si dentro de app/model/ me interesa crear una estructura de
directorios, tipo level1/modelo1.rb, level2/modelo2.rb, etc…? O sea,
un equivalente al crear “packages” de Java. Supogo que lo que debo
hacer es leer el manual de ruby que hay online O:)

Bueno, como te comentan por ahí, las convenciones de Rails te las puedes
saltar si quieres. De hecho, si no quieres usar plurales (y no tener que
andar especificando el nombre de las tablas para cada modelo), puedes cambiar
la configuración de ActiveRecord poniendo la siguiente línea en
environment.rb (en el bloque del Rails::Initializer.run):

config.active_record.pluralize_table_names = false

Espero que te resulte útil.

Si, ya lo creo :slight_smile: Oye, 2 preguntas rapidas: Hay conexiones
persistentes a la BBDD? Y si quiero tener conexiones a distintas bases
de datos?

Hola amigos… como puedo refrescar una página completa desde ruby,
desde
los códigos rb ya que no me sirven los refresh con ajax o javascript
porque estoy “pintando” una lista que me trae un webservice… no se
como
poder refrescar la página.
Saludos

El Viernes, 19 de Enero de 2007 09:23, Dani P.
escribió:> 2007/1/18, Imobach González Sosa [email protected]:

Desde los controladores puedes acceder a todos tus modelos sin
especificar nada. Ya lo hace Rails por ti :wink:

Pero y si dentro de app/model/ me interesa crear una estructura de
directorios, tipo level1/modelo1.rb, level2/modelo2.rb, etc…? O sea,
un equivalente al crear “packages” de Java. Supogo que lo que debo
hacer es leer el manual de ruby que hay online O:)

En Ruby lo que hay son módulos, no paquetes. En Ruby 1.2 puedes crearte una
estructura tranquilamente, lo que luego la tienes que referenciar como
si
cada directorio fuera un módulo diferente:

app/models/modulo/mi_modelo.rb

Te podrías referir a mi_modelo como sería: Modulo::MiModelo.

Si, ya lo creo :slight_smile: Oye, 2 preguntas rapidas: Hay conexiones
persistentes a la BBDD? Y si quiero tener conexiones a distintas bases
de datos?

Si no me equivoco, las conexiones son persistentes para cada
“dispatcher”.

Y en cuanto a conexiones diferentes, puedes establecer hasta una por
cada
clase. Echa un vistazo a esto:

http://wiki.onrails.com.ar/wiki/show/Conectando+a+Multiples+Databases

Saludos.


Imobach González Sosa
banot.net
Correo-e: imobachgs en banot punto net