Skip to content
This repository has been archived by the owner on Apr 4, 2023. It is now read-only.

Latest commit

 

History

History
117 lines (86 loc) · 2.02 KB

primeros-pasos-con-sinatra.md

File metadata and controls

117 lines (86 loc) · 2.02 KB

Primeros pasos con Sinatra

Para instalar Sinatra:

$ gem install sinatra

Si estás utilizando Bundler incluye la gema en el Gemfile:

gem "sinatra"

Después debes ejecutar:

$ bundle install

Crea un archivo app.rb (o como lo quieras nombrar) con el siguiente código:

require 'sinatra'

get '/' do
  'Hello world!'
end

Y ejecútalo con:

$ ruby myapp.rb

Abre tu navegador en http://localhost:4567

Utilizando vistas

get '/' do
  erb :index
end

La línea erb :index renderiza el archivo views/index.erb. Crea ese archivo con el siguiente contenido:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Hola Sinatra</title>
</head>
<body>
  <h1>Mi primera aplicación Web con Sinatra!</h1>
</body>
</html>

Podemos mezclar código Ruby en el HTML utilizando <% y %>:

...
  <% 100.times do %>
    <h1>Mi primera aplicación Web con Sinatra!</h1>
  <% end %>
...

Utilizando templates

Puedes utilizar un layout para no tener que repetir el mismo código en todos los archivos ERB. Crea un archivo views/layout.erb con el siguiente contenido:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Hola Sinatra</title>
</head>
<body>
  <%= yield %>
</body>
</html>

Ahora modifica views/index.erb para que solo contenga lo que va dentro de <body>:

<% 100.times do %>
  <h1>Mi primera aplicación Web con Sinatra!</h1>
<% end %>

Pasando información del controlador a la vista

Cuando defines una variable de instancia en la ruta, esa variable va a estar disponible en la vista. Por ejemplo:

get '/' do
  @name = "Pedro"
  erb :index
end

Y ahora podemos utilizar la variable @name en la vista:

<h1>Hola <%= @nombre %></h1>

Para imprimir información en pantalla desde el código Ruby utilizamos el igual cuando abrimos la etiqueta <%= y %>.

Atención: Si omites el = no va a aparecer nada en pantalla.