Ruby NOT Rails中是否有复数forms的函数?

我写了一些Ruby代码,而不是Rails,我需要处理这样的事情:

found 1 match found 2 matches 

我已经安装了Rails,所以也许我可以在脚本的顶部添加一个require子句,但是有谁知道一个将string复数化的RUBY方法? 有没有一个类,我可以要求,可以处理这个如果脚本不是Rails,但我已经安装了Rails?

编辑:所有这些答案都很接近,但我检查了它为我工作的一个。 在编写Ruby而不是Rails代码时,请尝试以下方法作为帮助程序:

 def pluralize(number, text) return text.pluralize if number != 1 text end 

7 Solutions collect form web for “Ruby NOT Rails中是否有复数forms的函数?”

其实所有你需要做的是

 require 'active_support/inflector' 

这将扩展stringtypes。

你可以这样做

 "MyString".pluralize 

这将返回

 "MyStrings" 

为2.3.5试试:

 require 'rubygems' require 'active_support/inflector' 

应该得到它,如果不尝试

 sudo gem install activesupport 

然后要求。

在大多数情况下,Inflector是矫枉过正的。

 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 

我个人喜欢绝对不是与轨道相关的语言学gem 。

 # from it's frontpage require 'linguistics' Linguistics.use :en "box".en.plural #=> "boxes" "mouse".en.plural #=> "mice" # etc 

这适用于我(使用ruby2.1.1和行动包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 

得到这个inflector,不知道你如何使用它

我为此定义了一个辅助函数,我将其用于每个用户可编辑模型的索引视图:

  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" 

我的解决scheme

 # 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”

希望有所帮助。

  • 如何findRuby中string的索引?
  • 匹配所有的正则expression式
  • Capistrano究竟是一个“angular色”呢?
  • 有没有办法在Ruby中访问方法参数?
  • 什么时候在Ruby中使用`require`,`load`或`autoload`?
  • 何时(如果)整合ActiveRecord迁移?
  • 哈希散列数组
  • 如何优雅地重命名ruby中的所有键?
  • 如何将哈希键从“符号”更改为“string”?
  • Capistrano部署问题
  • 用ruby实现平等的正确方法是什么?