ruby on rails - tutorial - pluralizar sin número de conteo en rieles 4
rails generate model (5)
Estoy construyendo una aplicación de blog. Me gustaría poder pluralizar la palabra "artículo" si hay más de una "publicación" publicada.
Como tal: artículos disponibles o artículo disponible
Esto es lo que tengo....
Available <%= pluralize @posts.published, "Article" %>:
He intentado
Available <%= pluralize @posts.published.count, "Article" %>:
y eso funciona ... pero no quiero el número. No debería leer 5 artículos disponibles ... no debería tener número.
¿Qué tal esta lógica simple? Supongo que también desea mostrar el número de Artículo, si no, simplemente elimine <%= @posts.published.count %>
Available <%= @posts.published.count %>
<% if @posts.published.count > 1 %>
Articles
<% else %>
Article
<% end %>
O
puedes usar un operador ternario ,
Available <%= @posts.published.count %> <%= if (@posts.published.count > 1) ? "Articles" : "Article" %>
Salida:
=> Available 1 Article # if there is only one article
=> Available 2 Articles # if there is more then 1 articles
He estado buscando la respuesta a esto yo mismo y no estaba satisfecho con ninguno de los existentes. Aquí está la solución más ordenada que encontré:
Available <%= "Article".pluralize(@posts.published.count) %>:
La documentación está here . Bits relevantes:
Devuelve la forma plural de la palabra en la cadena.
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"
Puede usar Rails Internationalization (I18n) para lograr esto. En su config/data/en.yml
sus traducciones serían algo como esto:
en:
available_articles:
zero: Available Article
one: Available Article
other: Available Articles
Y en su opinión, debería poder obtener la traducción de esta manera:
<%= t(:available_articles, count: @posts.published.count) %>
Puedes usar <%= @posts.published.count > 0 ? "Available Article".pluralize(@posts.published.count) : nil %>:
<%= @posts.published.count > 0 ? "Available Article".pluralize(@posts.published.count) : nil %>:
Sí, lo hice de esa forma, me gustó mucho:
- 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"
¡Gracias @Jakob W!