upcase for ruby string lowercase gsub

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



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í).