Railsではなく、いくつかのRubyコードを書いています。次のようなものを処理する必要があります。
found 1 match
found 2 matches
Railsをインストールしているので、スクリプトの先頭にrequire
句を追加できるかもしれませんが、文字列を複数化するRubyメソッドを知っていますか?スクリプトがRailsではないがRailsがインストールされている場合、これに対処できるクラスを要求できますか?
編集:これらの答えはすべて近かったが、私はそれが機能するものをチェックした。 RailsではなくRubyのコードを書くときは、このメソッドをヘルパーとして試してください。
def pluralize(number, text)
return text.pluralize if number != 1
text
end
実際にあなたがする必要があるのは
require 'active_support/inflector'
そして、それは文字列型を拡張します。
それでできます
"MyString".pluralize
戻る
"MyStrings"
2.3.5の場合:
require 'rubygems'
require 'active_support/inflector'
試していない場合、それを取得する必要があります
Sudo gem install activesupport
そして次に必要です。
ほとんどの場合、インフレクターは過剰です。
def x(n, singular, plural=nil)
if n == 1
"1 #{singular}"
elsif plural
"#{n} #{plural}"
else
"#{n} #{singular}s"
end
end
これをcommon.rbに入れるか、一般的なユーティリティ関数が好きな場所に...
require "common"
puts x(0, 'result') # 0 results
puts x(1, 'result') # 1 result
puts x(2, 'result') # 2 results
puts x(0, 'match', 'matches') # 0 matches
puts x(1, 'match', 'matches') # 1 match
puts x(2, 'match', 'matches') # 2 matches
私は個人的に linguistics gem が好きです。これは間違いなくRails関連。
# from it's frontpage
require 'linguistics'
Linguistics.use :en
"box".en.plural #=> "boxes"
"mouse".en.plural #=> "mice"
# etc
これは私のために機能します(Ruby 2.1.1およびactionpack 3.2.17を使用):
~$ irb
>> require 'action_view'
=> true
>> include ActionView::Helpers::TextHelper
=> Object
>> pluralize(1, 'cat')
=> "1 cat"
>> pluralize(2, 'cat')
=> "2 cats"
require 'active_support'
require 'active_support/inflector'
inf = ActiveSupport::Inflector::Inflections.new
インフレクタを取得するには、どのように使用するかわからない
私の解決策:
# Custom pluralize - will return text without the number as the default pluralize.
def cpluralize(number, text)
return text.pluralize if number != 1
return text.singularize if number == 1
end
したがって、cpluralize(1、 'reviews')を呼び出すと、「review」が返されます。
お役に立てば幸いです。
そのためのヘルパー関数を定義しました。すべてのユーザー編集可能モデルのインデックスビューに使用します。
def ovyka_counter(array, name=nil, plural=nil)
name ||= array.first.class.human_name.downcase
pluralize(array.count, name, plural)
end
次に、ビューから呼び出すことができます:
<% ovyka_counter @posts %>
国際化(i18n)の場合、これをロケールYAMLファイルに追加できます:
activerecord:
models:
post: "Conversation"