Problemas Ñ capitalize en Ruby on Rails

Desarrollando una nueva aplicacion totalmente 2.0 que lanzare dentro de 1 mes para uso publico, me he encontrado con el problema que mi base de datos con ciudades estaba totalmente en MAYUSCULAS.

Existian ciudades como:

  • VIí‘A DEL MAR
  • VICUí‘A.
  • Etc.

Mi idea por estetica era dejarlas tipo “Viña del mar”, o “Vicuña”.

Revisando la API String de Ruby, me di cuenta que existe un metodo llamado capitalize. El problema de este metodo que me realizaba todo correcto excepto “Lowercasse (PHPero, C) ” de mi í‘, por lo cual quedaba:

  • Vií‘a del mar
  • Vicuí‘a

¿Cual fue mi solucion?

Mi solucion fue simple, y consistio en agregar una expresion regular despues del metodo capitalize, de la siguiente forma:

ciudad.nombre.to_s.capitalize.gsub(/[í‘]/, 'ñ')

Santo remedio, todo funciona a la perfeccion.

Saludos

No hay Trackbacks

5 Comentarios

  1. jajajaja buena forma de arreglar ese bug.

    A todo esto, viste un articulo que anda dando vueltas acerca de un wnq ue se cambio de php a ruby y despues de dos anios programando en ruby volvio a php, diciendo que ruby es un desperdicio de tiempo.

    Saludos si encuentro el link te lo mando

    Comentado 16 Octubre 2007 a las 21:32 | Permalink
  2. luchox

    hola. bueno tu blog. una consulta y como haces para que VIÑA DEL MAR llegue a ser Viña del Mar. (Mar con M).

    gracias si hay respuesta.

    Comentado 21 Febrero 2008 a las 15:35 | Permalink
  3. Luchox, con la funcion capitalize :)

    Haces un for, y por cada espacio que encuentres ” ” , haces un capitalize.

    Saludos

    Comentado 25 Febrero 2008 a las 8:11 | Permalink
  4. Y que onda con los acentos? te fijaste como te los capitaliza?

    irb(main):001:0> “hola”.capitalize
    => “Hola”
    irb(main):002:0> “Único”.capitalize
    => “\303\232nico”
    irb(main):003:0> “único”.capitalize
    => “\303\272nico”

    El problema es que ruby no tiene soporte para UTF8 nativo como Java. Se salvan al igual que php por permitir cadenas binarias en los String, pero de todas formas uno no puede confiar en las operaciones nativas de string como capitalize, length, etc.

    Comentado 11 Abril 2008 a las 8:49 | Permalink
  5. Estimado tienes toda la razon, habría que implementar alguna clase adicional que extienda de la String para soporte español :)

    ñ -> Ñ
    ö -> Ö
    à -> À

    mistring.to_s.es_accents()

    Saludos :)

    Comentado 11 Abril 2008 a las 22:00 | Permalink

Escribe un Comentario

Tu e-mail nunca será compartido. Los campos requeridos están marcados *

*
*

dokshor.com (RSS) + Sator-ii theme by Felipe Lavín and finally edited by dokshor.