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のような方法はうまく機能しているように見えますがtableize、そうpluralizeではないことは私を混乱させます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 に答える