Sto cercando di convincere Rails a scrivere in maiuscolo il primo carattere di una stringa e lasciare tutti gli altri come sono. Sto riscontrando un problema in cui "vengo da New York" viene trasformato in "vengo da New York".
Quale metodo dovrei usare per selezionare il primo carattere?
Grazie
EDIT: Ho provato a implementare ciò che macek ha suggerito, ma ricevo un errore di "metodo non definito" capitalizza " . Il codice funziona correttamente senza la riga in maiuscolo. Grazie per l'aiuto!
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
EDIT 2: funziona. Grazie per l'aiuto!
EDIT 3: Aspetta, no, non l'ho fatto ... Ecco cosa ho nel mio modello di 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
MODIFICA 4: Ho provato la modifica di macek e ricevo ancora un errore di "capitalizzazione" del metodo non definito . Cosa potrei fare di sbagliato?
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
EDIT 5: questo è strano. Sono in grado di eliminare l'errore del metodo non definito utilizzando la riga seguente. Il problema è che sembra sostituire la prima lettera con un numero. Ad esempio, invece di mettere in maiuscolo la y in You , trasforma la y in un 121
self.title[0] = title[0].to_s.capitalize
EDIT 3
, devi iniziare la riga 2 conself.title =
. Inoltre, su tutte e 3 le righe, è necessario soloself.title
a sinistra di un=
(segno di uguale). In altri posti puoi semplicemente usaretitle
. Vedi la modifica sulla mia risposta per un esempio.