ruby-on-rails - select_tag - nested form rails
Rails i18n y estructura yml para etiquetas de formulario (3)
De acuerdo con la documentación de ActionView . Citar:
El texto de la etiqueta tendrá como valor predeterminado el nombre del atributo a menos que se encuentre una traducción en la configuración regional I18n actual (a través de views.labels. <Modelname>. <Attribute>) o usted lo especifique explícitamente.
Tengo un modelo de "usuario" y un formulario de registro. Aquí hay un fragmento de la parte relevante:
<% form_for(@user) do |f| %>
...
<p>
<%= f.label :username %>
<%= f.text_field :username, :class => ''full_width'' %>
</p>
...
<% end %>
Los puntos ocultan código sin importancia.
Como entiendo la documentación, si proporciono una traducción en mi archivo de configuración regional, en este caso: dk, mi dk.yml tiene el siguiente aspecto:
dk:
views:
labels:
user:
username:
"blahblah"
Los rieles deben traducir el texto de la etiqueta e insertar "blahblah" en lugar de "Nombre de usuario".
Esto no está sucediendo, entonces debo haberme perdido algo. Cualquier ayuda apreciada.
Creo que encontré otra solución aquí.
Mi aplicación era la versión 2.3.5. Ahora lo he cambiado a 2.3.8 y <%= f.label :username %>
ahora usa la traducción en:
dk:
activerecord:
attributes:
user:
username:
Encontré la pista en este ticket:
https://rails.lighthouseapp.com/projects/8994/tickets/745-form-label-should-use-i18n
En Rails 3.1 eso está un poco cambiado.
<% form_for @post do |f| %>
<%= f.label :title %>
<%= f.text_field :title %>
<%= f.submit %>
<% end %>
en:
helpers:
label:
post:
title: ''Customized title''
Esto se debe a que el método de label
que está llamando no es el de ActionView::Helpers::FormHelper
sino que es, de hecho, el método ActionView::Helpers::FormTagHelper
de ActionView::Helpers::FormTagHelper
. El método form_for
está reescribiendo el código en el bloque dado al agregar _tag
a los helpers de formularios usados. ¡Entonces no estás mirando la documentación para el método correcto!
Todavía no he usado ese método, ya que a veces la etiqueta de un campo puede ser diferente de las formas múltiples que usan el mismo modelo, así que escribí mi propia ayuda.