You are on page 1of 5

Fernando Gaitn

Pgina principal

Acerca de m

Libro de visitas

Contacto

Programacin web y otra cosas

Ruby on Rails, parte 3: Ruteo


16 mayo, 2013

Ferchu

Ruby on Rails

Buscar

10 comentarios

Jugar a Prode 555

Continuando con la estructura de Ruby on Rails hoy


aprenderemos a manejar el ruteo. Seguramente habrs notado
la forma con la que trabaja una aplicacin de Ruby on Rails
para manejar las rutas. Primero le indicamos el controlador y
luego el mtodo (que tiene el mismo nombre que la vista) de
esta forma:
http://localhost:3000/principal/index

La primera vez que ingresamos a:


http://localhost:3000/

Facebook
Me gusta A 72 personas les gusta esto. S el primero
de tus amigos.

(Por defecto hay un mensaje de bienvenida de Ruby on Rails)


Tal vez te preguntaste si hay forma de definir nosotros la pgina principal de nuestro sitio lo
que los programadores PHP conocemos como index, bueno esto por supuesto es posible.
Primero iremos a la carpeta raz de nuestro proyecto a la carpeta public y buscamo un
archivo llamado index.html, eliminamos el archivo o le cambiamos el nombre, por ejemplo
yo le pondr index2.html.
Volvemos atrs al directorio raz y buscamos la carpeta config, adentro debera haber un
archivo llamado routes.rb, lo abrimos con un editor de texto.
Buscamos la lnea:
# root :to => 'welcome#index'

El caracter # al principio sirve para comentar lneas, as que simplemente reemplazaremos


esa lnea por lo siguiente:
root :to => 'controlador#accion'

En mi caso:
root :to => 'principal#index'

Si ahora ingresamos a la pgina principal:


http://localhost:3000/

No veremos la pgina por defecto de Ruby on Rails sino el controlador y la vista que le
definimos.
Pero en Ruby on Rails tambin podemos definir alias para las urls, osea por ejemplo,
podramos crear otra accin para el controlador principal llamada indexdos, pero que para
acceder a la misma en lugar de ir a:
http://localhost:3000/principal/indexdos

Acceder con otra url inventada por nosotros, por ejemplo:


http://localhost:3000/indexdos

Para eso iremos al controlador principal y agregaremos un nuevo mtodo, modificando la


clase que ahora est as:

Redes sociales

Brasil 2014
Quin ser el campen de Brasil 2014?
Alemania
Argelia
Argentina
Australia
Blgica
Bosnia y Herzegovina
Brasil
Camern
Chile
Colombia
Corea del sur
Costa de marfil
Costa Rica
Croacia
Ecuador
Espaa
Estados Unidos
Francia
Ghana
Grecia
Holanda
Honduras
Inglaterra
Irn
Italia
Japn
Mxico
Nigeria
Portugal
Rusia
Suiza

Uruguay

class PrincipalController < ApplicationController

Vote

def index

Ver resultados

@saludo = "Hola mundo";


end

Entradas recientes

end

Por esto:

Laravel, parte 13: Ajax

class PrincipalController < ApplicationController


def index
@saludo = "Hola mundo";
end
def indexdos
#indexdos, mtodo de prueba
end
end

Luego entraremos a la carpeta app -> views -> principal y crearemos un nuevo archivo, a la
misma altura de index.html.erb, a la que llamaremos indexdos.html.erb. Abriremos con
un editor ese ltimo archivo que acabos de crear, y dentro escribiremos cualquier cosa, por
ejemplo:
<h1> Soy el indexdos </h1>

Ahora, para terminar de agregar esa accin a nuestra pgina debemos volver a la raz de
nuestro proyecto e ir a config -> routes.rb, abrir ese archivo con un editor y debajo de:

El fin de los .com.ar gratuitos


Prode 555
Introduccin a Node.js, parte 15:
Sesiones en Express
Introduccin a Angularjs
Introduccin a Node.js, parte 14:
Conectar Node.js con MySQL
Introduccin a Node.js, parte 13: CRUD
con Mongoose
Introduccin a Node.js, parte 12:
Conexin con MongoDB
Introduccin a Node.js, parte 11: Crear
un chat con socket.io
Introduccin a Node.js, parte 10:
Archivos pblicos con express

get "principal/index"

Agregar el nuevo mtodo de la clase principal:


get "principal/indexdos"

Esto debera quedar as entonces:

Categoras
Angularjs
Express

get "principal/index"

Ftbol

get "principal/indexdos"

Html / Css

Bien, ahora el controlador principal tiene dos acciones, index e indexdos. Para comprobar
que todo ha salido bien primero probemos llamar la accin de la forma tradicional de Ruby
on Rails:
http://localhost:3000/principal/indexdos

(Recordar siempre tener el servidor iniciado)


Ahora agregaremos el alias para esa accin. Volvemos al raz de nuestro proyecto y vamos
a config -> routes.rb y debajo de la lnea que antes descomentamos y definimos como
nuestra pgina principal, osea:

Html5 / Css3
Javascript / Ajax
Jquery
Juegos
Laravel
Mis textos
MongoDB
MySQL

root :to => 'principal#index'

Agregaremos una nueva lnea debajo, de esta forma:


match '/indexdos' => 'principal#indexdos'

Ese bloque debera quedar con las dos lneas as:

Node.js
Noticias
Php
Ruby on Rails

root :to => 'principal#index'

Videojuegos

match '/indexdos' => 'principal#indexdos'

Wordpress

Ahora pods ir a tu navegador con esta url:

XML

http://localhost:3000/indexdos

Y vers lo mismo que si vas a:


http://localhost:3000/principal/indexdos

De esta manera nosotros podemos crear cualquier controlador con sus acciones (mtodos y
vistas) y definir con el archivo routes.rb de qu forma queremos que se vean sus urls, algo
muy similar a lo que hacemos con .htaccess de Apache en PHP.

Google+
Fernando Gonzalo Gaitn

Ojo, yo le puse indexdos, el mismo nombre que la accin pero eso significa que sea
obligatorio, yo puede haber escrito en lugar de:
match '/indexdos' => 'principal#indexdos'

Esto:
match '/saraza' => 'principal#indexdos'

Y luego ingresar como:


http://localhost:3000/saraza

Y sera lo mismo
Bueno, hasta ac todo. En el prximo posteo veremos algo de cdigo Ruby para
ir familiarizndonos con su sintaxis que por lo menos para m es algo nuevo, ya que nunca
antes haba programado en Ruby.
Saludos!
Anterior: Ruby on Rails, parte 2: Modelo Vista Controlador
Siguiente: Ruby on Rails, parte 4: Variables
Redes sociables

10 comentarios

Luca
23 junio, 2013 a las 21:00

Hola Fernando,
De casualidad encontr tu blog y ahora estoy leyendo los posts de Ruby on Rails que es lo
que me interesa. Gracias por las explicaciones. Me qued claro que el controlador tiene un
mtodo y una vista con el mismo nombre.
Saludos,
Luca

Fernando G.
23 junio, 2013 a las 21:22

Luca, cmo ests. Primero que nada gracias a vos por pasar y comentar.
Con respecto a tu comentario, s, cada controlador tiene acciones para procesar
peticiones y debera tener una vista con el mismo nombre para mostrar el
resultado de la misma, osea la salida al navegador, el html, lo que se muestra. Sin
embargo, esto no debe ser siempre as.
Vos pods tener acciones (mtodos en el controlador) para otro tipo de cosas que
no son necesariamente cargar una vista. Por ejemplo, pods tener una accin
para recibir una peticin ajax que en lugar de cargar una vista va a devolver un
json o un xml.
Saludos!

Carlos Renato
22 julio, 2013 a las 2:46

Muy bueno hasta el momento, te felicito. Estoy igual aprendiendo RoR, vamos avanzando.
Mis dificultades son con los modelos.

Saludos Fernando desde Nicaragua.

Fernando G.
22 julio, 2013 a las 17:05

Saludos chavalo.

javier
2 octubre, 2013 a las 23:26

Muy buen tutorial


gracias

Fernando G.
2 octubre, 2013 a las 23:28

No, gracias a vos por pasarte, Javi.


Saludos!

whatname32@hotmail.com
17 abril, 2014 a las 21:09

Recin comenc con esto de ROR pero en el routes.rb no me aparece lo siguiente:


root :to => welcome#index
Si no:
root welcome#index
as que para cambiar mi pagina de inicio a mi recin creado controlador puse esto:
root principal#index
y funcion, pero en el segundo caso para el alias
Cmo se debera de colocar ya que la sintaxis que tu me manejas no se parece en mi
actual proyecto?
Tengo ruby 2.1.1
rails 4.1.0
RVM 1.25.22 (stable)

whatname32@hotmail.com
17 abril, 2014 a las 21:38

El alias no funcion, me sale esto:


Routing error:
No route matches [GET] /indexdos
Tengo dentro de:
app/controllers/principal/principal_controller.erb:
class PrincipalController < ApplicationController
def index
@saludo = 'Hola mundo!';
end
def indexdos
@saludo2 = 'Hola mundo dos!';

end
end
En app/views/principal/index.html.erb y indexdos.html.erb con sus respectivos
en Config/routes.rb
get principal/index
get principal/indexdos
get welcome/index
root welcome#index
match /indexdos => principal#indexdos
Creo que no se me pas nada pero no funciona

Mike
17 abril, 2014 a las 21:39

Sorry edita el nombre por Mike xD

Ferchu
17 abril, 2014 a las 22:41

Sinceramente no s, el cdigo parece estar bien escrito, pero este tutorial


fue hecho en versiones viejas de RoR, as que puede ser que algo haya
quedado deprecado.
Pods chequear el manual:
http://guides.rubyonrails.org/routing.html
Saludos!

Desarrollado por Fernandogaitan | Theme by ThemeZee


Este web est bajo una Licencia Creative Commons Atribucin-NoComercial-CompartirIgual 3.0 Unported.

You might also like