J'essaie de faire en sorte que Rails capitalise le premier caractère d'une chaîne et laisse tous les autres tels quels. Je rencontre un problème où «je suis de New York» se transforme en «je viens de New York».
Quelle méthode utiliserais-je pour sélectionner le premier caractère?
Merci
EDIT: J'ai essayé d'implémenter ce que macek a suggéré, mais j'obtiens une erreur "méthode non définie` capitalize '" . Le code fonctionne bien sans la ligne de capitalisation. Merci pour l'aide!
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: ça marche. Merci pour l'aide!
EDIT 3: Attendez, non je n'ai pas ... Voici ce que j'ai dans mon modèle de liste.
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: J'ai essayé l'édition de macek, et j'ai toujours une erreur de méthode non définie "capitalize" " . Qu'est-ce que je pourrais faire de 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
EDIT 5: C'est bizarre. Je suis en mesure de me débarrasser de l'erreur de méthode non définie en utilisant la ligne ci-dessous. Le problème est qu'il semble remplacer la première lettre par un chiffre. Par exemple, au lieu de mettre en majuscule le y dans You , il transforme le y en un 121
self.title[0] = title[0].to_s.capitalize
EDIT 3
, vous devez commencer la ligne 2 avecself.title =
. De plus, sur les 3 lignes, vous n'avez besoin queself.title
de la gauche d'un=
(signe égal). Dans d'autres endroits, vous pouvez simplement utilisertitle
. Voir la modification sur ma réponse pour un exemple.