Ruby on rails 3 只向上移动标题框

Ruby on rails 3 只向上移动标题框,ruby-on-rails-3,title-case,Ruby On Rails 3,Title Case,有没有办法修改Rails附带的titlecase方法,这样它就可以将所有应该大写的内容都大写,而不会将已经大写的内容变成小写?例如,标题“ABC照片拍摄”应改为“ABC照片拍摄”,而不是“ABC照片拍摄”。据我所知,Rails中没有这种内置方法。我只是构造了一个自定义的 class String def smart_capitalize ws = self.split ws.each do |w| w.capitalize! unless w.match(/[A-

有没有办法修改Rails附带的titlecase方法,这样它就可以将所有应该大写的内容都大写,而不会将已经大写的内容变成小写?例如,标题“ABC照片拍摄”应改为“ABC照片拍摄”,而不是“ABC照片拍摄”。

据我所知,Rails中没有这种内置方法。我只是构造了一个自定义的

class String
  def smart_capitalize
    ws = self.split
    ws.each do |w|
      w.capitalize! unless w.match(/[A-Z]/)
    end
    ws.join(' ')    
  end
end

"ABC photo".smart_capitalize 
#=> "ABC Photo"

"iPad is made by Apple but not IBM".smart_capitalize
#=> "iPad Is Made By Apple But Not IBM"
添加:根据美联社风格排除不重要的词语
据我所知,Rails中没有这样的内置方法。我只是构造了一个自定义的

class String
  def smart_capitalize
    ws = self.split
    ws.each do |w|
      w.capitalize! unless w.match(/[A-Z]/)
    end
    ws.join(' ')    
  end
end

"ABC photo".smart_capitalize 
#=> "ABC Photo"

"iPad is made by Apple but not IBM".smart_capitalize
#=> "iPad Is Made By Apple But Not IBM"
添加:根据美联社风格排除不重要的词语
理想情况下,我希望它也不大写某些词的标题,如“在”和“的”,但这是一个伟大的开始。谢谢@Kvass,只需添加一个排除列表就可以了。理想情况下,我希望它也不要将标题中的某些单词大写,如“in”和“the”,但这是一个很好的开始。谢谢@Kvass,只需添加一个排除列表就可以了。