Estou tentando fazer com que o Rails coloque em maiúscula o primeiro caractere de uma string e deixe todos os outros do jeito que estão. Estou tendo um problema em que "sou de Nova York" se transforma em "Sou de Nova York".
Que método devo usar para selecionar o primeiro personagem?
obrigado
EDIT: Eu tentei implementar o que o macek sugeriu, mas estou recebendo um erro "método indefinido` capitalize '" . O código funciona bem sem a linha maiúscula. Obrigado pela ajuda!
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: está funcionando. Obrigado pela ajuda!
EDIT 3: Espere, não, eu não ... Aqui está o que tenho no meu 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
EDIT 4: Tentei editar o macek e ainda estou obtendo um erro de método indefinido `capitalize '" . O que posso estar fazendo de errado?
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: Isso é estranho. Consigo me livrar do erro do método indefinido usando a linha abaixo. O problema é que parece substituir a primeira letra por um número. Por exemplo, em vez de colocar y em maiúscula em Você , ele transforma y em 121
self.title[0] = title[0].to_s.capitalize
EDIT 3
, você precisa iniciar a linha 2 comself.title =
. Além disso, em todas as 3 linhas, você só precisaself.title
à esquerda de um=
(sinal de igual). Em outros lugares você pode apenas usartitle
. Veja a edição em minha resposta para um exemplo.