我正在构建一个博客应用。我希望能够复制单词" article"如果不止一个"发布"已经发布了。"
像这样: 可用文章 要么 可用文章
这就是我的......
Available <%= pluralize @posts.published, "Article" %>:
我已经尝试了
Available <%= pluralize @posts.published.count, "Article" %>:
这有效......但我不想要这个号码。它不应该读取可用的5篇文章....它应该没有数字。
答案 0 :(得分:77)
我一直在寻找这个答案,对现有的任何一个都不满意。这是我找到的最整洁的解决方案:
Available <%= "Article".pluralize(@posts.published.count) %>:
文档是here。相关位:
返回字符串中复数形式的单词。
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"
答案 1 :(得分:12)
您可以使用Rails Internationalization (I18n)来完成此操作。在您的config/data/en.yml
中,您的翻译将是这样的:
en:
available_articles:
zero: Available Article
one: Available Article
other: Available Articles
在你看来,你应该能够得到这样的翻译:
<%= t(:available_articles, count: @posts.published.count) %>
答案 2 :(得分:1)
是的,我这样做了我非常喜欢:
- 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!
答案 3 :(得分:0)
您可以使用<%= @posts.published.count > 0 ? "Available Article".pluralize(@posts.published.count) : nil %>:
答案 4 :(得分:-1)
这个简单的逻辑怎么样?我想你想要显示文章的数量,如果没有,那么只需删除<%= @posts.published.count %>
Available <%= @posts.published.count %>
<% if @posts.published.count > 1 %>
Articles
<% else %>
Article
<% end %>
或强>
您可以使用ternary operator,
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