Flowdock
human_attribute_name(attribute, options = {}) public

Transforms attribute names into a more human format, such as “First name” instead of “first_name”.

Person.human_attribute_name("first_name") # => "First name"

Specify options with additional translating options.

Show source
Register or log in to add new notes.
December 11, 2010 - (v3.0.0)
2 thanks

I18n file to change an attribute's name

If you are using Active Record, use a locale file like the one below to change a model’s attribute’s human name.

en:
  activerecord:
    attributes:
      picture:
        explanation: Description

Without using the locale file:

ruby-1.9.2-p0 > Picture.human_attribute_name("explanation")
 => "Explanation" 

Using the locale file:

ruby-1.9.2-p0 > Picture.human_attribute_name("explanation")
 => "Description" 
June 29, 2011
2 thanks

Default values

For common attributes in several models, you can set a default human name like this:

de.yml

de:
  attributes:
    bez: Bezeichnung
    abk: Abkürzung
January 29, 2013
0 thanks

Works also with Mongoid

What works for Active Record, also works for Mongoid:

de:
  mongoid:
    attributes:
      picture:
        explanation: Description
July 18, 2013 - (v3.2.1 - v3.2.13)
0 thanks

Nested i18n attributes

If you want to use nested attributes in a i18n file (like person :has_many => :addresses), write:

en:
  activerecord:
    attributes:
      person:
        name:
      "person/addresses":
        street: "Street name"
      "person/phones":
        area: "Area code"
        number: Number