|
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 <p> Â <label for="articulo_articulo">Articulo:</label> Â <%= f.text_field :articulo %> </p> <p> Â <label for="articulo_marca_id">Marca:</label> Â <%= f.collection_select :marca_id, Marca.find(:all), :id, :marca, :prompt => "Seleccione Marca" %> </p> <p> Â <label for="articulo_cantidad">Cantidad:</label> Â <%= f.text_field :cantidad %> </p> <p> Â <label for="articulo_proveedor_id">Proveedor:</label> Â <%= f.collection_select :proveedor_id, Proveedor.find(:all), :id, :proveedor, :prompt => "Seleccione Proveedor" %> </p>
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 <h1>Listing Articulos</h1>
<table>  <tr>    <th>Articulo</th>    <th>Marca</th>    <th>Cantidad</th>    <th>Proveedor</th>  </tr>  <%- @articulos.each do |articulo|%>    <tr>      <td><%=h articulo.articulo %></td>      <td><%=h articulo.marca.marca %></td>      <td><%=h articulo.cantidad %></td>      <td><%=h articulo.proveedor.proveedor %></td>         <td><%=link_to 'Show', object_url(articulo) %></td>      <td><%=link_to 'Edit', edit_object_url(articulo) %></td>      <td><%=link_to 'Destroy', object_url(articulo), :confirm => 'Are you sure?', :method => :delete %></td>    </tr>  <% end %> </table> <br/> 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
<p> Â <strong>Articulo:</strong><%=h @articulo.articulo %> </p> <p> Â <strong>Marca:</strong><%=h @articulo.marca.marca %> </p> <p> Â <strong>Cantidad:</strong><%=h @articulo.cantidad %> </p> <p> Â <strong>Proveedor:</strong><%=h @articulo.proveedor.proveedor %> </p>
<%= 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.
|