web-dev-qa-db-fra.com

pluraliser sans nombre de comptage en Rails 4

Je crée une application de blog. J'aimerais pouvoir pluraliser le mot "article" si plus d'un "post" est "publié".

Comme ça: articles disponibles ou article disponible

Voici ce que j'ai ...

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

J'ai essayé

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

et cela fonctionne ... mais je ne veux pas le numéro. Il ne devrait pas lire les 5 articles disponibles .... il ne devrait pas avoir de numéro.

46
NothingToSeeHere

J'ai moi-même cherché la réponse à cette question et je n'ai été satisfait d'aucune des réponses existantes. Voici la solution la plus simple que j'ai trouvée:

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

La documentation est ici . Bits pertinents:

Renvoie la forme plurielle du mot dans la chaîne.

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"
78
jessewmc

Vous pouvez utiliser Rails Internationalization (I18n) pour accomplir cela. Dans ton config/data/en.yml vos traductions ressembleraient à ceci:

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

Et selon vous, vous devriez pouvoir obtenir la traduction comme ceci:

<%= t(:available_articles, count: @posts.published.count) %> 
12
Jakob W

Oui, j'ai fait comme ça, j'ai tellement aimé:

- 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"

Merci @Jakob W!

1
rld

Vous pouvez utiliser <%= @posts.published.count > 0 ? "Available Article".pluralize(@posts.published.count) : nil %>:

0
jljohnstone