[Ror-es] realizar consulta sin usar scaffold

imobachgs at banot.net
Thu Feb 23 10:44:26 GMT 2006


On Thu, Feb 23, 2006 at 10:17:53AM +0100, alarkspur wrote:
> Pretendo mostrar una consulta sin necesidad de usar scaffold, os  
> cuento como he empezado a realizarlo .
> 
> Tabla de la base de datos mysql
> datos
>     id int
>     mensaje varchar
> 
> creo la aplicación en rails:
>     - rails pruebas
>     -script/generate model dato
>     - script/generate controller dato
> 
> creo un fichero index.rhtml con lo siguiente
> 
> <% for ph in  %>
>     <br /><%= ph.mensaje %>
> <% end %>
> 
> y en el controlador
> 
> def index
>      = find( :all )
> end
> 
> y el modelo vacío
> 
> Esto no funciona :-( como se puede observar estoy un poco pez y algo  
> deprimido ya que una cosa tan sencilla me esta quitando el sueño.

Es normal que no funcione. Estás llamando al método find del
controlador... que no existe :P ¿El modelo se llama Dato? Pues tendrás
que hacer algo así como Dato.find(:all).

el código del controlador debería ser:

def index
  @datos = Dato.find(:all)
end

Y en la vista, algo como esto:

<% for dato in @datos %>
  <%= dato.mensaje %>
<% end %>

He cambiado los nombres porque creo que expresan mejor a qué se refiere
cada cosa.
> 
> Se que el controlador interactua entre el modelo y la vista por eso  
> dudo entre poner las consultas a la base de daos en el controlador o  
> en el modelo,  en los ejemplos que he visto el modelo le usan  
> solamente para validar datos ¿que recomendais?

Depende. El modelo no tiene que usarse únicamente para validar.
Son clases que pueden contar con los métodos que sean necesarios. Rails
te ofrece 'accesores' para los atributos y métodos para la búsqueda,
validación, etc. Pero tú eres libre de añadirle lo que quieras (si lo
necesitas). Pero esa es una discusión más compleja. Si alguien se
anima... ;)

> Gracias por la ayuda.

Espero que te sirva de ayuda.

Saludos.

--
imobachgs en banot punto net
osoh en jabberes punto org
osoh en irc.freenode.net