Antes de empezar con la preparación del entorno de trabajo de ROR, vamos a explicar el concepto teorico de Modelo-Vista-Controlador
El Modelo Vista Controlador (MVC) es un patrón de arquitectura de software que separa los datos de una aplicación, la interfaz de usuario, y la lógica de control en tres componentes distintos.
Como ejemplo de MVC en una aplicación web, podrÃamos decir que la vista es la página HTML y el código que provee de datos dinámicos a la página, el controlador es el Sistema de Gestión de Base de Datos y el modelo es el modelo de datos.
Modelo: Esta es la representación especÃfica de la información con la cual el sistema opera. La lógica de datos asegura la integridad de estos y permite derivar nuevos datos; por ejemplo, no permitiendo comprar un número de unidades negativo, calculando si hoy es el cumpleaños del usuario o los totales, impuestos o portes en un carrito de la compra.
En Rails, los modelos están basados en ActiveRecord. Lo más importante sobre los modelos de una aplicación Rails es que te dan la información correcta cuando el controlador se la pide.
Vista: Este presenta el modelo en un formato adecuado para interactuar, usualmente la interfaz de usuario. En Rails la vista se genera usando RHTML (HTML con código Ruby) o RXML (XML con código Ruby). El controlador elige qué vista usar, y hace disponible los datos que necesita.
Controlador: Este responde a eventos, usualmente acciones del usuario e invoca cambios en el modelo y probablemente en la vista. En una aplicación web el controlador recibe la petición del usuario, interactúa con el modelo para procesar los datos y hace disponible esos datos a la vista. Los controladores son la única parte del MVC que deben ser definidos. El controlador puede procesar los datos y mostrarlos, es autosuficiente.
Muchos sistemas informáticos utilizan un Sistema de Gestión de Base de Datos para gestionar los datos. En MVC corresponde al controlador.
Aunque se pueden encontrar diferentes implementaciones de MVC, el flujo que sigue el control generalmente es el siguiente:
El usuario interactúa con la interfaz de usuario de alguna forma (por ejemplo, el usuario pulsa un botón, enlace)
El controlador recibe (por parte de los objetos de la interfaz-vista) la notificación de la acción solicitada por el usuario. El controlador gestiona el evento que llega, frecuentemente a través de un gestor de eventos (handler) o callback.
El controlador accede al modelo, actualizándolo, posiblemente modificándolo de forma adecuada a la acción solicitada por el usuario (por ejemplo, el controlador actualiza el carro de la compra del usuario). Los controladores complejos están a menudo estructurados usando un patrón de comando que encapsula las acciones y simplifica su extensión.
El controlador delega a los objetos de la vista la tarea de desplegar la interfaz de usuario. La vista obtiene sus datos del modelo para generar la interfaz apropiada para el usuario donde se refleja los cambios en el modelo (por ejemplo, produce un listado del contenido del carro de la compra). El modelo no debe tener conocimiento directo sobre la vista. Sin embargo, el patrón de observador puede ser utilizado para proveer cierta indirección entre el modelo y la vista, permitiendo al modelo notificar a los interesados de cualquier cambio. Un objeto vista puede registrarse con el modelo y esperar a los cambios, pero aun asà el modelo en sà mismo sigue sin saber nada de la vista. El controlador no pasa objetos de dominio (el modelo) a la vista aunque puede dar la orden a la vista para que se actualice. Nota: En algunas implementaciones la vista no tiene acceso directo al modelo, dejando que el controlador envÃe los datos del modelo a la vista.
La interfaz de usuario espera nuevas interacciones del usuario, comenzando el ciclo nuevamente.
La ventaja del sistema MVC es que, al aplicar esta separación, se hace posible crear más de una vista para el mismo modelo (una vista abreviada y una vista detallada), y reutilizar el modelo y el código que guarda el modelo de manera permanente, para escribir librerias relacionadas, o incorporar datos del dominio original en programas más grandes.
Cuando creemos la estructura de directorios de una aplicación con Rails, verás que esta estructura está bien diferenciada, y que para cada modelo existe un directorio donde colocar los archivos correspondientes. Esto facilita la programación ya que se suelen tener pequeños archivos con poco código donde se ve claramente que función desempeñan.
hola, necesito un codigo en instantrails que sirva para enviar correos desde una aplicacion web. por favor responder a mi correo
copia de la wiki