web-dev-qa-db-ja.com

Rails 4のカウント数なしの複数形化

ブログアプリを作成しています。複数の「投稿」が「公開」されている場合、Wordの「記事」を複数形にしたいです。

そのように:利用可能な記事または利用可能な記事

これは私が持っているものです。

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

私はもう試した

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

そしてそれは動作します...しかし、私は数字が欲しくありません。 Available 5 Articles ....を読むべきではありません。番号はありません。

46

私はこれに対する答えを自分で探していましたが、既存のものには満足していませんでした。ここに私が見つけた最もきれいな解決策があります:

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

ドキュメントは こちら です。関連ビット:

文字列内のWordの複数形を返します。

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

Rails国際化(I18n) を使用してこれを達成できます。あなたのconfig/data/en.yml翻訳は次のようになります。

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

そして、あなたの意見では、あなたはこのような翻訳を得ることができるはずです:

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

はい、私はとても好きでした:

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

ありがとう、@ Jakob W!

1
rld