for - Ruby post título a babosa
string ruby (5)
¿Esto es rieles?
string.parameterize
Eso es. Para un slugging aún más sofisticado, vea ActsAsUrl . Puede hacer lo siguiente:
"rock & roll".to_url => "rock-and-roll"
"$12 worth of Ruby power".to_url => "12-dollars-worth-of-ruby-power"
"10% off if you act now".to_url => "10-percent-off-if-you-act-now"
"kick it en Français".to_url => "kick-it-en-francais"
"rock it Español style".to_url => "rock-it-espanol-style"
"tell your readers 你好".to_url => "tell-your-readers-ni-hao"
¿Cómo debo convertir un título de publicación en una babosa en Ruby?
El título puede tener cualquier carácter, pero solo quiero que el slug permita [a-z0-9-_]
(¿Debería permitir otros caracteres?).
Así que básicamente:
- bajar todas las letras
- convertir espacios en guiones
- eliminar caracteres extraños
He usado esta gema. Es simple pero útil.
Me gusta FriendlyId, el autoproclamado "Swiss Army Bulldozer" de crear babosas. https://github.com/norman/friendly_id
to_slug es un excelente complemento de Rails que maneja casi todo, incluidos los personajes funky, pero su implementación es muy simple. Chuck en String y estarás ordenado. Aquí está la fuente condensada:
String.class_eval do
def to_slug
value = self.mb_chars.normalize(:kd).gsub(/[^/x00-/x7F]/n, '''').to_s
value.gsub!(/['']+/, '''')
value.gsub!(//W+/, '' '')
value.strip!
value.downcase!
value.gsub!('' '', ''-'')
value
end
end
slug = title.downcase.strip.gsub('' '', ''-'').gsub(/[^/w-]/, '''')
downcase
hace en minúsculas. La strip
se asegura de que no haya espacios en blanco iniciales o finales. El primer gsub
reemplaza espacios con guiones. El segundo gsub
elimina todos los caracteres que no sean alfa ni guión bajo del guión (tenga en cuenta que este conjunto está muy cerca de /W
pero también incluye el guión, razón por la cual se explica aquí).