Ich versuche, Rails dazu zu bringen, das erste Zeichen einer Zeichenfolge groß zu schreiben und alle anderen so zu belassen, wie sie sind. Ich habe ein Problem, bei dem aus "Ich komme aus New York" "Ich komme aus New York" wird.
Mit welcher Methode würde ich das erste Zeichen auswählen?
Vielen Dank
BEARBEITEN: Ich habe versucht zu implementieren, was macek vorgeschlagen hat, aber ich erhalte den Fehler "undefinierte Methode" großschreiben "" . Der Code funktioniert ohne Groß- und Kleinschreibung. Danke für die Hilfe!
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: Hat es funktioniert. Danke für die Hilfe!
EDIT 3: Warten Sie, nein, ich habe nicht ... Hier ist, was ich in meinem Listenmodell habe.
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: Versucht, Macek zu bearbeiten und trotzdem einen undefinierten Methodenfehler zu erhalten . Was könnte ich falsch machen?
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: Das ist komisch. Ich kann den undefinierten Methodenfehler mithilfe der folgenden Zeile beseitigen. Das Problem ist, dass es scheint, den ersten Buchstaben durch eine Zahl zu ersetzen. Anstatt beispielsweise das y in You groß zu schreiben , verwandelt es das y in ein 121
self.title[0] = title[0].to_s.capitalize
EDIT 3
müssen Sie Zeile 2 mit beginnenself.title =
. Außerdem benötigen Sie in allen drei Zeilen nurself.title
links von einem=
(Gleichheitszeichen). An anderen Stellen können Sie einfach verwendentitle
. Ein Beispiel finden Sie in der Bearbeitung meiner Antwort.