Railsで文字列の最初の文字を大文字にし、他の文字はすべてそのままにしようとしています。「私はニューヨーク出身」が「私はニューヨーク出身」に変わるという問題に遭遇しています。
最初の文字を選択するにはどの方法を使用しますか?
ありがとう
編集: macekが提案したものを実装しようとしましたが、「未定義のメソッド「大文字」」エラーが発生します。コードは、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: macekの編集を試みましたが、未定義のメソッド「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:これは奇妙です。以下の行を使用して、未定義のメソッドエラーを取り除くことができます。問題は、最初の文字を数字に置き換えているように見えることです。たとえば、Youでyを大文字にする代わりに、yを121に変換します
self.title[0] = title[0].to_s.capitalize
EDIT 3
、2行目をで始める必要がありますself.title =
。また、3行すべてself.title
で、=
(等号)の左側のみが必要です。他の場所ではそのまま使用できますtitle
。例については、私の回答の編集を参照してください。