Estoy tratando de que Rails ponga en mayúscula el primer carácter de una cadena y deje todos los demás como están. Me encuentro con un problema en el que "soy de Nueva York" se convierte en "Soy de Nueva York".
¿Qué método usaría para seleccionar el primer carácter?
Gracias
EDITAR: Traté de implementar lo que sugirió macek, pero obtengo un error de "método indefinido 'capitalizar'" . El código funciona bien sin la línea en mayúscula. ¡Gracias por la ayuda!
def fixlistname!
self.title = self.title.lstrip + (title.ends_with?("...") ? "" : "...")
self.title[0] = self.title[0].capitalize
errors.add_to_base("Title must start with \"You know you...\"") unless self.title.starts_with? 'You know you'
end
EDITAR 2: Lo tengo funcionando. ¡Gracias por la ayuda!
EDITAR 3: Espera, no, no lo hice ... Esto es lo que tengo en mi modelo de lista.
def fixlistname!
self.title = self.title.lstrip + (title.ends_with?("...") ? "" : "...")
self.title.slice(0,1).capitalize + self.title.slice(1..-1)
errors.add_to_base("Title must start with \"You know you...\"") unless self.title.starts_with? 'You know you'
end
EDITAR 4: Probé la edición de macek, y aún obtengo un error de método indefinido "capitalizar" . ¿Qué podría estar haciendo mal?
def fixlistname!
self.title = title.lstrip
self.title += '...' unless title.ends_with?('...')
self.title[0] = title[0].capitalize
errors.add_to_base('Title must start with "You know you..."') unless title.starts_with?("You know you")
end
EDITAR 5: Esto es extraño. Puedo deshacerme del error del método indefinido usando la línea a continuación. El problema es que parece reemplazar la primera letra con un número. Por ejemplo, en lugar de poner en mayúscula la y en usted , convierte la y en un 121
self.title[0] = title[0].to_s.capitalize
EDIT 3
, debe comenzar la línea 2 conself.title =
. Además, en las 3 líneas, solo necesitaself.title
a la izquierda de un=
(signo igual). En otros lugares puedes usartitle
. Vea la edición de mi respuesta para ver un ejemplo.