Ya tenemos un interfaz web que nos permite administrar los artículos. Esta zona será privada
(posteriormente podríamos ponerle protección por usuario y contraseña); necesitamos una parte
pública que muestre los artículos.
Vamos a crear para ello un nuevo controlador, que tendrá por el momento sólo 2 acciones:
"index" (la página principal que mostrará los artículos) y "detalles" (la página que mostrará todos
los detalles de un artículo):
$ script/generate controller Blog index detalles exists
app/controllers/ exists app/helpers/ create app/views/blog exists
test/functional/ create app/controllers/blog_controller.rb create
test/functional/blog_controller_test.rb create
app/helpers/blog_helper.rb create app/views/blog/index.rhtml
create app/views/blog/detalles.rhtml
# app/controllers/blog_controller.rb
class BlogController < ApplicationController def index @articulos
= Articulo.find(:all, :order => 'id DESC') end def detalles
@articulo = Articulo.find(params[:id]) end end
Como vemos, las acciones son muy sencillas: en index, creamos el objeto @articulos que
contendrá todos (:all) los artículos, ordenados a la inversa (:order => 'id DESC') para mostrar los
últimos arriba. La acción "detalles" creará el objeto @articulo buscándolo por el id pasado como
parámetro.
Ahora necesitamos crear las vistas, que cogerán estos objetos que hemos preparado en el
controlador y mostrarán su información por pantalla. Comencemos por la vista correspondiente a la
acción "index", editando el fichero app/views/blog/index.rhtml. Como verás es un simple bucle
que recorre @articulos, y para cada uno muestra su título, cuerpo y una línea de separación al final.
El título se muestra en forma de enlace a la acción "detalles", con el id del artículo en curso dentro
del bucle. El cuerpo se muestra usando tres "helpers" de texto: "h" se encarga de asegurar que el
html mostrado es seguro (para evitar buena parte de ataques); "truncate" se encarga de recortar el
texto en caso de que sea más largo que la longitud especificada, y "simple_format" se encarga de
dar un formato muy simple a un texto para mostrarlo como HTML, por ejemplo convirtiendo los
saltos de línea en párrafos.
# app/views/blog/index.rhtml
<% for articulo in @articulos %> <h1><%= link_to
articulo.titulo, :action => :detalles, :id => articulo %></h1> <%=
simple_format(truncate(h(articulo.cuerpo),200)) %> <hr /> <% end
%>
# app/views/blog/index.rhtml
<% for articulo in @articulos %> <h1><%= link_to
articulo.titulo, :action => :detalles, :id => articulo %></h1> <%=
simple_format(truncate(h(articulo.cuerpo),200)) %> <hr /> <% end
%>
No hay comentarios:
Publicar un comentario