Плюрализовать без номера счета в рельсах 4
Я создаю приложение для блога. Я хотел бы иметь возможность плюрализовать слово "статья", если "опубликован" более "пост".
Так же:
Доступные статьи
или
Доступная статья
Это то, что у меня есть.
Available <%= pluralize @posts.published, "Article" %>:
Я пробовал
Available <%= pluralize @posts.published.count, "Article" %>:
и это работает... но я не хочу этого числа. Он не должен читать "Доступные 5 статей".... он не должен иметь номера.
Ответы
Ответ 1
Я искал ответ на это сам и не был удовлетворен ни одним из существующих. Вот самое удобное решение, которое я нашел:
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"
Ответ 2
Вы можете использовать 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) %>
Ответ 3
Вы можете использовать <%= @posts.published.count > 0 ? "Available Article".pluralize(@posts.published.count) : nil %>:
Ответ 4
Как насчет этой простой логики? Я думаю, вы хотите также отобразить номер статьи, а затем просто удалить <%= @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