ruby require pluralize

¿Existe una función de pluralizar en Ruby NOT Rails?



require pluralize (7)

Estoy escribiendo un código Ruby, no Rails, y necesito manejar algo como esto:

found 1 match found 2 matches

Tengo Rails instalado, así que tal vez pueda agregar una cláusula require en la parte superior del script, pero ¿alguien sabe de un método RUBY que pluraliza cadenas? ¿Hay alguna clase que pueda requerir que pueda manejar esto si el script no es Rails pero tengo Rails instalado?

Edit: Todas estas respuestas estaban cerca, pero marqué la que funcionó para mí. Pruebe este método como un ayudante al escribir código Ruby, no Rails:

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


En realidad todo lo que necesitas hacer es

require ''active_support/inflector''

y que se extenderá el tipo de cadena.

entonces puedes hacer

"MyString".pluralize

que volverá

"MyStrings"

para 2.3.5 intente:

require ''rubygems'' require ''active_support/inflector''

Deberías conseguirlo, si no intentarlo.

sudo gem install activesupport

y luego lo requiere.


Esto me funciona (usando ruby ​​2.1.1 y actionpack 3.2.17):

~$ irb >> require ''action_view'' => true >> include ActionView::Helpers::TextHelper => Object >> pluralize(1, ''cat'') => "1 cat" >> pluralize(2, ''cat'') => "2 cats"


He definido una función auxiliar para eso, la uso para la vista de índice de cada modelo editable del usuario:

def ovyka_counter(array, name=nil, plural=nil) name ||= array.first.class.human_name.downcase pluralize(array.count, name, plural) end

entonces puedes llamarlo desde la vista:

<% ovyka_counter @posts %>

para la internacionalización (i18n), luego puede agregar esto a sus archivos YAML locales:

activerecord: models: post: "Conversation"


Inflector es una exageración para la mayoría de las situaciones.

def x(n, singular, plural=nil) if n == 1 "1 #{singular}" elsif plural "#{n} #{plural}" else "#{n} #{singular}s" end end

Ponga esto en common.rb, o donde quiera que le gusten sus funciones de utilidad general y ...

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


Personalmente, me gusta la gema lingüística que definitivamente no está relacionada con los rieles.

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


mi solución:

# 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

Por lo tanto, puede tener ''revisión'' devuelta si llama a cpluralize (1, ''reseñas'')

Espero que ayude.


require ''active_support'' require ''active_support/inflector'' inf = ActiveSupport::Inflector::Inflections.new

Para obtener el inflector, no estoy seguro de cómo lo usas.