On 10/15/07, Paolo Loran <[EMAIL PROTECTED]> wrote:
> Mmi idea es trabajar delegando desde una clase que sea la pagina principal
> mandando llamados a los distintos objetos que conoce esa clase
> administradora, para no tener que repetir codigo ya que es un proyecto para
> la facultad pensando siempre en polimorfismo, delegacion, herencia,
> blablabla.
>

Este, entonces creo estamos encarando el problema por el lugar equivocado.

Otros podrán comentar sobre esto (y espero que lo hagan!).

Un repaso: los modelos manejan los datos, las vistas ofrecen la User
Interface y los controladores son el wiring entre estas dos partes.

Ahora bien, teniendo una mejor descripción (y mas detallada) podría
darte mejor respuesta, pero por el momento se me ocurre:

Una clase Dashboard que en realidad define varios métodos como
"latest_news", donde este realmente hace el query a un método
especializado News.latest_news() (donde realmente llamas al #find del
modelo)

Así, con otro métodos.

Luego, un controlador Dashboard cuyo #index:

@news = Dashboard.latest_news

y renderiza la vista del template dashboard/index.html.erb (o .rhtml)
y es ahí donde iteras por las noticias, tal vez incluyendo el parcial
'news/item.rhtml':

<% for news in @news %>
  render :partial => 'news/item.rhtml', :object => news
<% end %>

y en news/_item.rhtml (es un parcial, se prefija con underscore):

<%= news.title %>
<%= news.body %>

Etc...

Usando el parcial de news, estas reutilizando las vistas y reduciendo
la repetición.

Usando el Dashboard, estas centralizando aquello que quieres mostrar
de cada modelo y a la vez reutilizando aquellas definiciones.

Con respecto a polimorfismo, por experiencia te recomiendo mantenerte
lejos. Cuando intentes depurar donde esta un problema puedes volverte
loco intentando rastreas desde donde viene.

Al margen que Ruby no posee polimorfismo, sino Mixins.

Saludos,

-- 
Luis Lavena
Multimedia systems
-
Leaders are made, they are not born. They are made by hard effort,
which is the price which all of us must pay to achieve any goal that
is worthwhile.
Vince Lombardi
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a