Ruby on Rails; Vistas, Formularios con Form Helpers y envío de parámetros (POST)

(Este post es una continuación del Curso de Ruby).
<< Para ver el Post Anterior

En este capítulo crearemos una vista para una acción determinada de nuestro controlador y dentro de esta vista crearemos un formulario de varios campos con una de las funciones ayudantes para la creación de formularios que nos ofrece Rails (Form Helpers). Finalmente recogeremos y mostraremos los parámetros enviados por el formulario.

Los Form Helpers son métodos o funciones escritos para facilitarnos la creación de los diferentes elelementos que conforman un formulario.

Existen dos tipos de ayudantes para la creación de Formularios: Los ayudantes para la creación de formularios regulares (regular form helpers) y los ayudantes para la creación de formularios basados en el Modelo (model form helpers). La diferencia fundamental está en que estos últimos se generan basándonse en los distintos campos de una tabla determinada de nuestra base de datos. Los Form Tag Helpers, no están relacionados con los modelos de ningún modo, de forma que pueden ser usados para lo queramos, al contrario que los Model Form Helpers, usados para editar atributos de un modelo concreto. Es decir, editar valores de los campos de una determinada tabla de nuestra base de datos.

Para crear un formulario obviamente es necesario escribir algo de código y esto debemos hacerlo dentro de una vista. Las vistas (views), son documentos escritos en (x)html con “trozos” de ruby para incluir los datos dinámicos. Una vista es la representación de la acción concreta de un controlador determinado

Las vistas se encuentran ubicadas dentro del arbol de directorios de una aplicación rails en: app -> views -> <nombre_controlador> -> <nombre_accion.rhtml>.

arbol de la aplicación Rails

Esto puede hacerse de forma manual creando el directorio y el archivo .rhtml de nuestra vista o bien ejecutando en nuestra consola de rails el script :

ruby script/generate controller <nombre_controller> <nombre_acción_vista>

Sentencia que nos creará un nuevo controlador con la acción y su vista definidas en “nombre_acción_vista”.

Como podemos ver en la figura de arriba, en nuestro ejemplo hemos creado una vista para la acción index del controlador acciones. Este es el contenido de nuestro controlador (en “acciones_controller.rb”).

Accion Index del controlador acciones (acciones_controller.rb)

La acción index que hemos incluido en nuestro controlador “acciones” recoge en distintas variables de instancia los parámetros enviados desde el formulario que crearemos enseguida en la vista index.rhtml.

Como se puede observar, los parámetros enviados desde el formulario mediante POST también son almacenados en el array params.

Además recoge en @current_time la fecha y hora actual devuelta por la función interna Time.now.

Las variables de instancia se caracterizan por estár precedidas del símbolo arroba ‘@’ y estar disponibles para toda la clase o controlador, es decir, estar disponibles para su uso en todas las acciones de un controlador. Es importante destacar que están disponibles también en el ámbito de las vistas.

Hemos cometando antes que una vista no es otra cosa que un documento (x)html con código Ruby incrustado. Para incustrar código Ruby dentro de una vista se presentan dos opciones:

  • Utilizar Scriptlets. Se trata de código situado entre las etiquetas <% y %>. Es la parte de código en la que se incluirán los bucles, condicionales y demás elementos de control que todo lenguaje de programación tiene. Esta parte del código no será devuelta en pantalla.
  • Utilizar Expresiones. Código situado entre las etiquetas <%= %> utilizado para presentar el valor devuelto por el código Ruby o por el contenido en una variable de instancia como las que se han declarado anteriormente.

Escribamos el código de la vista index.rhtml.

Código de index.rhtml

Hemos utilizado los form helpers para la generación del formulario.

<%= start_form_tag :action =>’index’ %> y <%= end_form_tag %> Crea la etiqueta de apertura y cierre del formulario. El :action=>’index’ de la etiqueta de apertura indica que envíe los parametros a la acción index del controlador.

Hemos utilizado:

<%= text_field ‘formulario’, ‘ nombre’, ‘size’ => 20 %>
<%= text_field ‘formulario’, ‘ email’, ‘size’ => 20 %>
<%= text_field ‘formulario’, ‘ web, ‘size’ => 20 %>

para crear los campos de texto del formulario y

<%= submit_tag %> para crear el botón submit del formulario.

El html resultante es el siguiente.

CodigoHtml de Index.rhtml

En realidad el uso de los Form Helpers es totalmente opcional. Si el programador se encuentra cómodo con el html y entiende el modo en que rails mapea las url no hay problema en escribir directamente el código del formulario en html.

… y esto es lo que veremos en la pantalla de nuestro navegador…

Vista de Index.rhtml

Fijaros como aparece en negrita la Fecha y la hora actuales almacenadas en la variable de instancia @current_time declarada en la acción index de nuestro controlador.

Si realizamos el envío veremos que no pasa absolutamente nada. Vamos a añadirle las variables de entorno que nos muestran los datos enviados por el formulario para terminar el ejemplo de hoy.

Agregamos variables de instancia

Anuncios

2 Responses to Ruby on Rails; Vistas, Formularios con Form Helpers y envío de parámetros (POST)

  1. […] Ruby on Rails, entornos y conexión a la base de datos (Este post es una continuación del Curso de Ruby on Rails). << Para ver el Post Anterior […]

  2. […] Ruby on Rails; Vistas, Formularios con Form Helpers y envío de parámetros (POST) abril, 2008 1 comentario […]

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: