Si ahora volvemos al interfaz de administración, veremos que estos dos nuevos campos se han
incorporado a los listados y formularios, y funcionan como esperábamos. Evidentemente, los
artículos creados con anterioridad no tendrán almacenadas las fechas puesto que estos campos no
existían cuando los creamos.
Los scaffolds dinámicos son de mucha utilidad para arrancar rápidamente e ir viendo cómo queda la
aplicación mientras vamos pensando qué campos necesitamos, pero llega un momento en que es
mejor disponer de los códigos en ficheros de manera que los podamos modificar a nuestro antojo
para personalizar el aspecto (por ejemplo traducir las frases en inglés!). Para ello ejecutamos:
$ script/generate scaffold Articulo Admin exists app/controllers/
exists app/helpers/ exists app/views/admin exists
app/views/layouts/ exists test/functional/ dependency model exists
app/models/ exists test/unit/ exists test/fixtures/ identical
app/models/articulo.rb identical test/unit/articulo_test.rb
identical test/fixtures/articulos.yml create
app/views/admin/_form.rhtml create app/views/admin/list.rhtml
create app/views/admin/show.rhtml create app/views/admin/new.rhtml
create app/views/admin/edit.rhtml overwrite
app/controllers/admin_controller.rb? [Ynaqd] y force
app/controllers/admin_controller.rb overwrite
test/functional/admin_controller_test.rb? [Ynaqd] y force
test/functional/admin_controller_test.rb identical
app/helpers/admin_helper.rb create app/views/layouts/admin.rhtml
create public/stylesheets/scaffold.css
Vemos que el script nos solicita nuestro permiso para sobreescribir un par de ficheros existentes,
que se crearon al generar el controlador. Contestaremos afirmativamente en ambos casos con "y".
Examinemos rápidamente los códigos que nos ha generado este scaffold. Abre de nuevo el fichero
app/controllers/admin_controller.rb:
# app/controllers/admin_controller.rb
class AdminController < ApplicationController def index list
render :action => 'list' end # GETs should be safe (see
http://www.w3.org/2001/tag/doc/whenToUseGet.html) verify :method
=> :post, :only => [ :destroy, :create, :update ], :redirect_to =>
{ :action => :list } def list @articulo_pages, @articulos =
paginate :articulos, :per_page => 10 end def show @articulo =
Articulo.find(params[:id]) end def new @articulo = Articulo.new
end def create @articulo = Articulo.new(params[:articulo]) if
@articulo.save flash[:notice] = 'Articulo was successfully
created.' redirect_to :action => 'list' else render :action =>
'new' end end def edit @articulo = Articulo.find(params[:id]) end
def update @articulo = Articulo.find(params[:id]) if
@articulo.update_attributes(params[:articulo]) flash[:notice] =
'Articulo was successfully updated.' redirect_to :action =>
'show', :id => @articulo else render :action => 'edit' end end def
destroy Articulo.find(params[:id]).destroy redirect_to :action =>
'list' end end
No hay comentarios:
Publicar un comentario