Rails 4中没有计数的复数

我正在构建一个博客应用程序。 如果“出版”不止一个,我希望能够对“文章”一词进行复数。

像这样:可用文章要么可用文章

这就是我所拥有的...

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

我试过了

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

那行得通...但是我不要这个号码。 它不应该阅读Available 5 Articles ....它应该没有编号。

5个解决方案
79 votes

我一直在寻找自己的答案,对任何现有的答案都不满意。 这是我找到的最简洁的解决方案:

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

文档在这里。 相关位:

返回字符串中单词的复数形式。

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"
jessewmc answered 2020-02-22T02:06:36Z
12 votes

您可以使用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) %> 
Jakob W answered 2020-02-22T02:07:01Z
1 votes

是的,我非常喜欢这种方式:

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

rld answered 2020-02-22T02:07:25Z
0 votes

您可以使用<%= @posts.published.count > 0 ? "Available Article".pluralize(@posts.published.count) : nil %>:

jljohnstone answered 2020-02-22T02:07:45Z
-1 votes

这个简单的逻辑怎么样? 我想您也要显示商品数,如果不显示,则只需删除<%= @posts.published.count %>

Available <%= @posts.published.count %> 
    <% if @posts.published.count > 1 %>
        Articles
    <% else %>
        Article
    <% end %>

要么

您可以使用三元运算符

Available <%= @posts.published.count %> <%= if (@posts.published.count > 1) ? "Articles" : "Article" %>

输出:

=> Available 1 Article   # if there is only one article 
=> Available 2 Articles   # if there is more then 1 articles 
Hetal Khunti answered 2020-02-22T02:08:18Z
translate from https://stackoverflow.com:/questions/27242603/pluralize-without-count-number-in-rails-4