Pluralize(count, string) in model (and h?!)


Snack Recipe 10 in Chad F.'s /Rails Recipes/ sez:

<%= pluralize @recipes.size, ‘unread recipe’ %>

I pluralize up in my model. (I generate a lot of HTML there. Sue me!)

I can get to the Aspect Oriented Programming version that Inflector adds

type = type.pluralize unless count == 1
return count.to_s + ' ' + type

I want to dry that up; one line for two. But one line…

Inflector.pluralize count, (' ' + type).pluralize


ArgumentError: wrong number of arguments (2 for 1)

Why am I asking about such a trivial method?? Because, while we are on
topic, I also want to abuse^W exploit h() in my models, and those
single-letter methods are super-hard to Google for!

Phlip ← NOT a blog!!!

On 12/4/06, Phlip [email protected] wrote:

ArgumentError: wrong number of arguments (2 for 1)

That would be because the pluralize() method as implemented in
ActionView::Helpers::TextHelper adds a bunch of stuff:

File vendor/rails/actionpack/lib/action_view/helpers/text_helper.rb,

line 62
62: def pluralize(count, singular, plural = nil)
63: "#{count} " + if count == 1
64: singular
65: elsif plural
66: plural
67: elsif Object.const_defined?(“Inflector”)
68: Inflector.pluralize(singular)
69: else
70: singular + “s”
71: end
72: end

If you have already made the decision to generate html in your model
classes, it may not be such a stretch to include TextHelper in your
model classes as well, even though that is a bit ugly…

Don’t know where the h() method is implemented though.