Я пытаюсь заставить Rails использовать первый символ строки с заглавной буквы, а все остальные оставить такими, какие они есть. Я столкнулся с проблемой, когда «я из Нью-Йорка» превращается в «Я из Нью-Йорка».
Какой метод я бы использовал для выбора первого символа?
Спасибо
РЕДАКТИРОВАТЬ: Я попытался реализовать то, что предложил Мацек, но получаю ошибку «undefined method` capitalize '» . Код отлично работает без строки с заглавными буквами. Спасибо за помощь!
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
РЕДАКТИРОВАТЬ 2: Получил работу. Спасибо за помощь!
РЕДАКТИРОВАТЬ 3: Подождите, нет, я не ... Вот что у меня есть в моей модели списка.
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
РЕДАКТИРОВАТЬ 4: Пробовал редактировать мацека, но по-прежнему получаю ошибку undefined method "capitalize" . Что я делал не так?
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
РЕДАКТИРОВАТЬ 5: Это странно. Я могу избавиться от ошибки неопределенного метода, используя строку ниже. Проблема в том, что кажется, что первая буква заменяется цифрой. Например, вместо того, чтобы использовать букву y в слове You , он превращает y в 121
self.title[0] = title[0].to_s.capitalize
EDIT 3
, вам нужно начать строку 2 сself.title =
. Кроме того, во всех трех строках вам нужно толькоself.title
слева от=
(знака равенства). В других местах можно просто использоватьtitle
. Смотрите редактирование моего ответа для примера.