Próbuję zmusić Railsy do zapisania wielkimi literami pierwszego znaku ciągu i pozostawienia wszystkich innych takimi, jakie są. Mam problem, w wyniku którego „Jestem z Nowego Jorku” zamienia się w „Jestem z Nowego Jorku”.
Jakiej metody użyłbym, aby wybrać pierwszy znak?
Dzięki
EDYCJA: Próbowałem zaimplementować to, co zasugerował macek, ale otrzymuję błąd „niezdefiniowana metoda„ używać wielkich liter ” . Kod działa dobrze bez wiersza z wielką literą. Dzięki za pomoc!
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
EDYCJA 2: Działa. Dzięki za pomoc!
EDYCJA 3: Czekaj, nie, nie ... Oto, co mam w moim modelu listy.
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
EDYCJA 4: Wypróbowałem edycję macek, ale nadal otrzymuję błąd „ wielkiej ” metody w niezdefiniowanej metodzie . Co mogę zrobić źle?
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
EDYCJA 5: To dziwne. Jestem w stanie pozbyć się niezdefiniowanego błędu metody, korzystając z poniższej linii. Problem w tym, że zdaje się zastępować pierwszą literę liczbą. Na przykład, zamiast pisać wielką literę y w tobie , zamienia y w 121
self.title[0] = title[0].to_s.capitalize
EDIT 3
, musisz zacząć linię 2 odself.title =
. Ponadto we wszystkich 3 liniach wystarczyself.title
po lewej stronie=
(znak równości). W innych miejscach możesz po prostu użyćtitle
. Zobacz przykład w mojej odpowiedzi.