在Ruby on Rails中覆盖titleize方法

时间:2012-07-08 13:35:29

标签: ruby-on-rails

有没有办法覆盖RoR中的.titleize方法?

例如,titleize不适用于像TJ Watson这样的名字。它将'tj watson'转换为Tj Watson。我想在其中添加这样的规则。

此外,我不想定义新方法,因为我的代码已经通过它使用.titleize。如何在titleize添加功能而无需在整个代码中更改方法调用?

1 个答案:

答案 0 :(得分:2)

将一些* .rb文件放在initializers文件夹中,其中包含以下内容:

# encoding: utf-8

module ActiveSupport
  module Inflector
    def titleize(word)
      # old code for referencing:
      # humanize(underscore(word)).gsub(/\b(?<!['’`])[a-z]/) { $&.capitalize }
      < your code goes here >
    end
  end
end

同时检查此方法:https://stackoverflow.com/a/10471857/1322562