No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Entender el enrutamiento básico

8/36
Recursos

Aportes 16

Preguntas 3

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Entender el enrutamiento básico


Vamos crear una ruta con ruby.

El método get en RoR nos hace un sistema de mapeo que conseguirá el método GET, y este va a buscar un $PATH llamado ‘hola’, ahora a partir de ese mapeo va utilizar una equivalencia para enviarlo a un controlador y a una acción dentro del controlador.

# routes.rb
Rails.application.routes.draw do
  # En este caso el PATH es 'hola', el controlador es 'welcome' y su acción es 'hello'
  get 'hola', to: 'welcome#hello'
end

♦ Rails utiliza la convención de que toda la lógica y construcción que vamos a hacer sea utilizando el leguaje Inglés.

Dentro de app → controllers vamos a crear los archivos de los controladores, para hacerlo tenemos que poner el nombre que tiene el controlador que definimos en la ruta y añadir al final _controller.rb

♦ Para crear clases en Ruby debemos utilizar la convención de un sistema CamelCase.

Para convertir una clase en un controlador debemos utilizar una herencia de RoR que es llamada ApplicationController. Esta clase de ApplicationController dotará una serie de funcionalidades y métodos que nos permitirán establecer nuestra clase WelcomeController como un controlador de RoR.

# welcome_controller.rb

class WelcomeController < ApplicationController
    # Este método 'hello' es una acción en Rails
    def hello
        @var = Pet.first.name
        @var2 = Pet.first.breed

        @credentials = Rails.application.credentials.hello
    end
end

Para crear nuestra vista debemos ir a app → views y crear el directorio con el nombre del controlador y un archivo html llamado como la acción.

# hello.html

Para prender el servidor de rails, escribimos el comando:

rails server

♦ Para acceder a la ruta escribimos localhost:3000/hola

Si lo desean también pueden colocar la ruta como

  get 'hola' => 'welcome#hello'

Rails provee varias maneras de escribir el mismo asunto

A los que les salga el error de dependencias de webpack hay que ejecutar el comando:
rails webpack:install

a mi me paso, y me funcionó.

Me marca el siguiente error :
No template for interactive request
WelcomeController#hello is missing a template for request formats: text/html

NOTE!
Unless told otherwise, Rails expects an action to render a template with the same name,
contained in a folder named after its controller. If this controller is an API responding with 204 (No Content),
which does not require a template, then this error will occur when trying to access it via browser,
since we expect an HTML template to be rendered for such requests. If that’s the case, carry on.

Si a alguno, como a mi aparece un error como el siguiente:

ActiveRecord::NoDatabaseError (FATAL:  database "mi_app_development" does not exist
):

Es porque la base de datos aún no ha sido creada, para arreglarlo basta con escribir:

rails db:create

Después ya solo se vuelve a iniciar el servidor y listo.

Súper bien explicado. Mil gracias.

Dentro del archivo config>routes.rb se definen todas las rutas de la aplicación.

Usando el método get hará un mapeo donde, a través de la petición que llega desde el cliente al servidor va a mapear el método get.

Este método va a buscar el path que le asignemos y a partir del mapeo que realizar una equivalencia para enviarlo a un controlador y a una acción dentro del controlador.

Rails permite usar el idioma inglés, por lo que es recomendable nombrar los controladores en inglés.

# <metodo> '<PATH>', to: <controlador>#<accion>
get 'hola', to: 'welcome#hello'

Todos los controladores deben ir en la carpeta app>controllers, por convención todos controladores terminan con el sufijo controller y usando snake case.

La clase dentro de cada controlador debe llamarse como el archivo pero usando camel case.

Para que la clase funcione como un controlador tiene que heredar de la clase que nos provee Rails llamada AppliactionController, que provee a la clase con una serie de funcionalidades y métodos que permitirá establecer el controlador.

class WelcomeController <ApplicationController

Las funciones que se definan dentro de la clase WelcomeController corresponderán a las acciones, en este caso hay definir una función llamada hello, que fue la que asignamos en la ruta.


Por último, hay que crear la vista que se va a renderizar cuando se haga la petición al controlador. Las vistas se crean en la carpeta app>views. Dentro de esta carpeta se debe crear otra carpeta con el nombre del controlador y dentro un archivo con el nombre de la acción con extensión HTML. Para esta situación se crea una carpeta llamada welcome y dentro un archivo llamada hello.html.

Para correr un servidor de desarrollo para ver la aplicación funcionando se utiliza el comando rails server.

Nos dará una dirección local donde está corriendo la aplicación. En esa dirección se muestra una pantalla de bienvenida de Rails. Si queremos ver la vista que se creó hay que añadir a la ruta /hola que es la ruta que definimos en el archivo routes.rb.

Me pueden ayudar con esto porfa

Esto es mucho mejor que JavaScript, en JS te tenias que descargar 1000 librerias para hacer un routing

Si tienen problemas al renderizar la página con el localhost:3000/hola
Les sugiero revisar la propuesta de MatNemeth en este link

cuando entro en localhost/3000/hola me sale el siguiente error

Routing Error
uninitialized constant WelcomeController.

y en la terminal me sale el siguiente error

ActionController::RoutingError (uninitialized constant WelcomeController):

Alguien me puede ayudar con este problema? que no se por que me sale si se conecta bien al servidor de rails pero cuando le ingreso la variación /hola ya no conecta.

Sería bueno que explicaran cual es la diferencia entre tener las diferentes capas lógicas entre modelos y controladores para aplicar otros patrones de diseño.
Por lo demás muy buena explicación.

Hola a todos!!!, Tuve muchos problemas para la instalación de Rails en mi Mac, si alguien más no puede seguir con el curso porque no le corre, sigan este tutorial de instalación q es el más completo q conseguí y funciona perfect.
https://install-rails-mac.com/#create-a-workspace-folder

que buenas clases

Yo tube problema al momento de ingresar el localhost:3000 , me salia error pero el servidor si levanto normal? que puede ser ? gracias

**Si tienen problemas con las librerias / gemas vean este video **

gemas