Problemas técnicos 1/8: URL’s Amigables
Friendly Id en Ruby on Rails
¿A qué me refiero con hacer urls amigables?
Cuando trabajas con Ruby on Rails lo más común es que te encuentres que tus urls parecen algo así:
www.ejemplo.com/pais/46546
Lo que hace la siguiente gema es utilizar datos que proporcionas en tus formularios para crear urls como esta:
www.ejemplo.com/pais/México
¿Cuál es la diferencia?
Es más fácil ubicar dónde te encuentras, qué estás viendo en este momento y hacia donde puedes moverte.
¿Cómo utilizar la gema Friendly Id?
Supongamos que quieres incluir friendly id a tu modelo de Countries para que en el url aparezca el nombre del país y no el ID.
1- Instalar gema en Gemfile
gem 'friendly_id', '~> 5.1.0'
2- Correr la instalación en la terminal:
rails generate friendly_id
3.- Si no has generado el modelo Countries, incluye un nuevo campo en tu nuevo modelo que tenga el nombre de slug:string:uniq, ahí guardará el texto que aparecerá en el url y tendrá que ser único para que no haya problemas si se llega a repetir el nombre, es decir:
rails generate model Country name:string slug:string:uniq
Si ya habías generado el modelo antes, lo que tienes que hacer es una migración para incluir un nuevo campo, así:
rails generate migration AddSlugToCountry slug:string:uniq
Corres la migración de la base de datos:
$ rake db:migrate
Lo último que tienes que hacer es ir al modelo que está utilizando, en este caso el modelo Countries(app/models/country.rb), e incluir friendly Id, de esta manera:
class Country < ApplicationRecord
extend FriendlyId
friendly_id :name, use: :slugged
end
Lo que quiere decir el código es que va a utilizar la gema de Friendly Id y utilizará la información del campo “name” para el nuevo URL.
Si ya tenías algunos registros hechos y quieres modificar sólo el url, corres este código en la consola de Rails. Buscará todos los registros y los volverá a guardar.
rails consoleCountry.find_each(&:save)