Activesupport titlecase()with bang(.titlecase!)?

时间:2012-11-04 11:28:21

标签: ruby-on-rails ruby ruby-on-rails-3 activesupport

我目前有一个包含客户名称的字符串,我正在使用:

@customer_name = @customer_name.titlecase

但这似乎有点啰嗦。当我尝试做的时候:

@customer_name.titlecase!

我得到一个no方法错误。 titlecase!是否存在?看起来很奇怪,没有办法做到这一点,因为例如有一个downcase!

2 个答案:

答案 0 :(得分:1)

你可以在http://as.rubyonrails.org/classes/ActiveSupport/CoreExtensions/String/Inflections.html#M000381上看到所有标题都是这样的(也注意没有爆炸方法)

def titleize
  Inflector.titleize(self)
end

所以,如果你想实现这个是

class String
  def titleize!
    replace titleize
  end
end

然后:

>> the_string = "oh hai"
=> "oh hai"
>> the_string.titleize!
=> "Oh Hai"
>> the_string
=> "Oh Hai"

答案 1 :(得分:0)

有或没有爆炸的downcase是Ruby方法。标题不是。也许,这就是它没有爆炸版本的原因。 Rails开发人员可能没有费心去定义爆炸版本。