Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

pluralize without count number in rails 4

I am building a blog app. I'd like to be able to pluralize the word "article" if more than one "post" is "published."

Like so: Available Articles or Available Article

This is what I have....

 Available <%=  pluralize @posts.published, "Article" %>:

I've tried

 Available <%=  pluralize @posts.published.count, "Article" %>:

and that works...but I don't want the number. It shouldn't read Available 5 Articles....it should have no number.

like image 717
NothingToSeeHere Avatar asked Dec 02 '14 05:12

NothingToSeeHere


3 Answers

I have been looking for the answer to this myself and wasn't satisfied with any of the existing ones. Here's the tidiest solution I found:

 Available <%=  "Article".pluralize(@posts.published.count) %>:

Documentation is here. Relevant bits:

Returns the plural form of the word in the string.

If the optional parameter count is specified,
the singular form will be returned if count == 1.
For any other value of count the plural will be returned.

  'post'.pluralize             # => "posts"
  'apple'.pluralize(1)         # => "apple"
  'apple'.pluralize(2)         # => "apples"
like image 87
jessewmc Avatar answered Nov 04 '22 22:11

jessewmc


You could use Rails Internationalization (I18n) to accomplish this. In your config/data/en.yml your translations would be something like this:

en:
  available_articles:
    zero: Available Article
    one: Available Article
    other: Available Articles

And in your view you should be able to get the translation like this:

<%= t(:available_articles, count: @posts.published.count) %> 
like image 42
Jakob W Avatar answered Nov 04 '22 22:11

Jakob W


Yes, I did that way I liked so much:

- if @post.comments.persisted.any?
    h4
      = t(:available_comments, count: @post.comments.count)
    = render @post.comments.persisted
  - else
    p
      | There are no comments for this post.
en:
  available_comments:
    one: "%{count} Comment"
    other: "%{count} Comments"

Thank's @Jakob W!

like image 1
rld Avatar answered Nov 04 '22 23:11

rld