Cómo "humanizar" los nombres de atributos en Rails
Desde las últimas versiones de Rails, habréis observado que en los formularios se utilizan símbolos para mostrar el nombre de los atributos, por ejemplo
<%= f.label :title_spanish %>
Esto es perfecto, te ahorra mucho trabajo, pero tiene el problema de que normalmente el nombre de los atributos no es el que realmente queremos mostrar en las vistas o no está en nuestro idioma. Por ejemplo si tenemos un atributo title_spanish la etiqueta de arriba generará este código
<label for="title_spanish">Title spanish</label>
El helper label intenta "humanizar" el nombre del atributo, pero a menudo no es el resultado que nos gustaría tener.
Hay una manera elegante y muy DRY de personalizar este comportamiento, para no tener que andar modificando todas las vistas a mano.
En el directorio initializers podemos editar el archivo inflections.rb y añadir lo siguiente
ActiveSupport::Inflector.inflections do |inflect| inflect.human "title_spanish", "Título en castellano" inflect.human "created_at", "Creado el" ... end
Esto también hará que en los mensajes de error de las validaciones aparezcan los nombres de los atributos como los hayamos definido nosotros y no con su nombre real. En definitiva, en cualquier lugar donde se utilice el símbolo :title_spanish se mostará como "Título en castellano".
Podéis ver más sobre la clase Inflections en su página de la API de Rails





