yml tutorial rails i18n generate active ruby-on-rails ruby-on-rails-4 activerecord pluralize

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!