20
irb(main):001:0> require 'active_support'
=> true
irb(main):002:0> require 'active_support/inflector/inflections'
=> true
irb(main):003:0> ActiveSupport::Inflector.pluralize('test')
=> "test"
irb(main):004:0> ActiveSupport::Inflector.singularize('tests')
=> "tests"
irb(main):005:0> ActiveSupport::Inflector.titleize('hat simulator')
=> "Hat Simulator"
<ort::Inflector.tableize("america's number one hat simulator")
=> "america's number one hat simulator"

嗯,基本上,这就是问题所在。让我感到困惑的是,诸如titleize似乎可以正常工作的方法,但是tableizepluralize并且singularize不能。

我忘了要求什么吗?

(在单独的说明中,我注意到此页面提供了诸如 之类的示例"post".pluralize,当我尝试时,结果为NoMethodError: undefined method 'pluralize' for "post":String。但也许这是为了另一个问题而保存的东西。)

4

1 回答 1

37

#pluralize无需向类添加新方法即可访问String

require 'active_support/inflector'
ActiveSupport::Inflector.pluralize('test')
#=> "tests"

对于String班级:

require 'active_support/core_ext/string'
"test".pluralize
#=> "tests"

它实际上ActiveSupport::Inflector.pluralize在下面调用:

def pluralize
  ActiveSupport::Inflector.pluralize(self)
end
于 2011-02-28T10:50:13.633 回答