Hola a Todos los que visitan estas paginas…
Vamos a hacer un pequeño ejercicio el cual va a estar dividido en varias partes en las cuales vamos a hacer una pequeña aplicacion para manejar un inventario pequeño con opciones basicas
Se requiere hacerlo de la manera mas sencilla para los usuarios del sistema y con la seguridad necesaria, asi que manos a la obra…
Vamos a crear nuestra template que en este caso lo vamos a llamar venta, y lo crearemos para que funcione con la una base de datos de Mysql
fvasquez@fvasquez:~/proyectos$ rails -d mysql venta
Creamos nuestra base de datos
fvasquez@fvasquez:~/proyectos/venta$ sudo mysqladmin create venta -p
Utilizaremos el plugin scaffold resource de James Goolik para nuestra aplicacion asi que nos instalamos desde su repositorio la version mas nueva
fvasquez@fvasquez:~/proyectos/venta$ svn export http://svn.jamesgolick.com/resource_controller/tags/stable vendor/plugins/resource_controller
Ahora modificaremos el archivo /config/initializers/inflections.rb esto lo hacemos con el fin de que el sistema nos plurarize correctamente en español los modelos controladores y vistas y lo dejamos como se muestra a continuacion.
Inflector.inflections.clear
Inflector.inflections do |inflect|
inflect.plural /([aeiou])([A-Z]|_|$)/, ‘\1s\2’
inflect.plural /([rlnd])([A-Z]|_|$)/, ‘\1es\2’
inflect.singular /([aeiou])s([A-Z]|_|$)/, ‘\1\2’
inflect.singular /([rlnd])es([A-Z]|_|$)/, ‘\1\2’
end
Ahora vamos a crear los archivos de migracion para nuestra aplicacion aqui podemos ver que tenemos uno que se llama proveedor, con la medida que tomamos anteriormente nos plurizara correctamente a proveedores
fvasquez@fvasquez:~/proyectos/venta$ ./script/generate scaffold_resource Marca marca:string
fvasquez@fvasquez:~/proyectos/venta$ ./script/generate Scaffold_resource Articulo articulo:string marca_id:integer cantidad:integer proveedor_id:integer
fvasquez@fvasquez:~/proyectos/venta$ ./script/generate scaffold_resource Proveedor proveedor:string contacto:string
Y construimos nuestras tablas en la base de datos…
fvasquez@fvasquez:~/proyectos/venta$ rake db:migrate
Vamos a modificar nuestros modelos para indicar las relaciones que se deben cumplir entre las diferentes tablas de nuestra base de datos y los dejamos como se muestra a continuacion
fvasquez@fvasquez:~/proyectos/venta$ nano /app/models/marca.rb
class Marca < ActiveRecord::Base
has_many :articulos
end
fvasquez@fvasquez:~/proyectos/venta$ nano /app/models/proveedor.rb
class Proveedor < ActiveRecord::Base
has_many :articulos
end
fvasquez@fvasquez:~/proyectos/venta$ nano /app/models/articulos.rb
class Articulo < ActiveRecord::Base
belongs_to :marca
belongs_to :proveedor
end
En este momento es pertinente crear algunos registros en proveedores y marcas asi que adelante prente tu webric y vamos a:
http://localhost:3000/proveedores
http://localhost:3000/marcas
Ahora nos falta modificar las vistas para de nuestros articulos para poder trabajar con ellos como lo deseamos, modificaremos los siguientes archivos y los vamos a dejar como se indica a continuacion
fvasquez@fvasquez:~/proyectos/venta$ nano /app/views/articulos/_form.html.erb
Articulo:
<%= f.text_field :articulo %>
Marca:
<%= f.collection_select :marca_id, Marca.find(:all), :id, :marca, :prompt => “Seleccione Marca” %>
Cantidad:
<%= f.text_field :cantidad %>
Proveedor:
<%= f.collection_select :proveedor_id, Proveedor.find(:all), :id, :proveedor, :prompt => “Seleccione Proveedor” %>
Si nos damos cuenta estamos haciendo un collection_select para los campos marca_id y proveedor_id que nos traera en un campo select todos los elementos que tenemos es esas tablas.
fvasquez@fvasquez:~/proyectos/venta$ nano /app/views/articulos/index.html.erb
Listing Articulos
Articulo | Marca | Cantidad | Proveedor | |||
---|---|---|---|---|---|---|
<%=h articulo.articulo %> | <%=h articulo.marca.marca %> | <%=h articulo.cantidad %> | <%=h articulo.proveedor.proveedor %> | <%=link_to ‘Show’, object_url(articulo) %> | <%=link_to ‘Edit’, edit_object_url(articulo) %> | <%=link_to ‘Destroy’, object_url(articulo), :confirm => ‘Are you sure?’, :method => :delete %> |
Aqui lo que hemos echo es utilizar las relaciones entre modelos para poder desplegar el valor mas no el indice
fvasquez@fvasquez:~/proyectos/venta$ nano /app/views/articulos/show.html.erb
Articulo:<%=h @articulo.articulo %>
Marca:<%=h @articulo.marca.marca %>
Cantidad:<%=h @articulo.cantidad %>
Proveedor:<%=h @articulo.proveedor.proveedor %>
<%= link_to ‘Edit’, edit_object_url %>
|
<%= link_to ‘Back’, collection_url %>
Aqui lo que hemos echo es utilizar las relaciones entre modelos para poder desplegar el valor mas no el indice
Pues hasta aqui le vamos a dejar por ahora pronto tendre lista la segunda parte….
Como siempre espero que este documento les sea de utilidad
Atte Faustino Vasquez Limon
LINUX USER.