Ruby on Rails, entendiendo las URL

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

Ya vimos en un post anterior como Rails traza la ruta a los métodos de un controlador.

Básicamente, y sin liarnos mucho, decir que el comienzo del trabajo lo realiza el Servidor Web (WebRick, Mongrel …) enrutando las solicitudes entrantes a un script Ruby perteneciente al marco de trabajo Rails llamado “dispatcher” (algo así como despachador ???). La función de este despachador es la de analizar el URL que recibe para invocar la acción adecuada dentro del controlador adecuado. A su vez esta acción puede, entre otras cosas, invocar a un modelo y/o a una vista.

Como ya vimos en un POST anterior, la primera parte de la URL identifica un equipo y la segunda identifica un recurso Web. En Action Pack (recordad que es el marco de trabajo que utiliza Rails para administrar los controladores), el recurso tiene al menos dos partes: Un controlador y una accción.

Retomando un ejemplo anterior:

http://localhost/acciones/hablar

localhost: Es el equipo
acciones: es el controlador
hablar: es una acción o un método de este controlador.

Puede incluir una tercera parte en la cual serán enviados los distintos parámetros o valores a procesar dentro de las acciones.

Por ejemplo:
http://localhost/acciones/diEsto/Hola_Mundo
“Hola_Mundo” es el parámetro enviado a la accion “diEsto” del controlador acciones.

Como en toda aplicación Web, los distintos parámetros pueden ser enviados mediante uno de esto dos métodos: GET o POST. A rails no hace falta especificarle porque método le están siendo enviados los parámetros. Éstos, independientemente de si proceden de un formulario con el método POST o forman parte de un enlace Web (GET), son almacenados en un array de tipo Hash llamado params.

Pero el mejor modo de ver todo esto es poniéndolo en práctica.

Volvamos a nuestro archivo acciones_controller.rb para añadirle una acción mas a nuestro controlador “acciones”. Recordad que se encuentra en app > controllers dentro del árbol de directorio de nuestra aplicación test.

Nueva Accion diEsto para el controlador Acciones

¿Que hemos hecho?. Bueno, hemos añadido una nueva acción a nuestro controlador, llamada diEsto. ¿Que hace esta acción?. Comprobar la existencia del parámetro id para mostrarlo en pantalla o, en su defecto, la frase “Me he quedado sin palabras !!”.

En Rails, se considera que el valor del primer parámetro recibido pertenece a la posición “id” del array params[] (todo irá cobrando su sentido mas adelante), de modo que, como vemos en el ejemplo, la forma de acceder al contenido de esa posición del array params es por medio de params[:id].

Vale vamos a probarlo. Lanzad vuestro servidor Web abriendo la consola de comandos (Simbolo del Sistema del Windows o Termina de MacOs X) y escribiendo:

>ruby script/sever

Una vez puesto en marcha nuestro servidor, abrid vuestro navegador favorito y comprobad el resultado de la URL:

http://localhost:3000/acciones/diEsto/

Me he quedado sin palabras

El resultado debe de ser algo parecido, (mas bien igual) al que se muestra en la imagen de arriba. En este caso, no le hemos pasado ningún parámetro a la accion “diEsto” del controlador “acciones” , de modo que nos muestra el mensaje indicado para los casos en los que el parámetro id no ha sido enviado.

Probad ahora con esta otra URL: http://localhost:3000/acciones/diEsto/Hola Mundo

Hola Mundo

El resultado de enviarle como valor del parámetro “id” el string “Hola Mundo” es mostrarnos en pantalla el valor del parámetro enviado.

El siguiente paso sería el envio de los parámetros mediante POST. Para ello sería necesario introducir nuevos conceptos: Plantillas, creación de formularios con Rails … y es algo que creo será mejor desarrollar en otro POST. Os espero.

Anuncios

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: