ฉันกำลังพยายามทำให้ Rails ใช้ประโยชน์จากอักขระตัวแรกของสตริงและปล่อยให้คนอื่น ๆ เป็นแบบที่เป็นอยู่ ฉันกำลังประสบปัญหาที่ทำให้ "ฉันมาจากนิวยอร์ก" กลายเป็น "ฉันมาจากนิวยอร์ก"
ฉันจะใช้วิธีใดในการเลือกอักขระตัวแรก
ขอบคุณ
แก้ไข:ฉันพยายามใช้สิ่งที่ macek แนะนำ แต่ฉันได้รับข้อผิดพลาด"วิธีการที่ไม่ได้กำหนดเป็นตัวพิมพ์ใหญ่" รหัสทำงานได้ดีโดยไม่มีบรรทัดตัวพิมพ์ใหญ่ ขอบคุณสำหรับความช่วยเหลือ!
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 แล้ว แต่ยังได้รับข้อผิดพลาดวิธีการที่ไม่ได้กำหนดเป็นตัวพิมพ์ใหญ่ฉันจะทำอะไรผิด?
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
2self.title =
นอกจากนี้ในทั้ง 3 บรรทัดคุณต้องself.title
อยู่ทางซ้ายของ=
(เครื่องหมายเท่ากับ) เท่านั้น ในสถานที่อื่น ๆ คุณสามารถtitle
ใช้ได้ ดูตัวอย่างการแก้ไขคำตอบของฉัน