Method: ActiveModel::Translation#human_attribute_name
- Defined in:
- activemodel/lib/active_model/translation.rb
#human_attribute_name(attribute, options = {}) ⇒ Object
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.
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'activemodel/lib/active_model/translation.rb', line 48 def human_attribute_name(attribute, = {}) attribute = attribute.to_s if attribute.include?(".") namespace, _, attribute = attribute.rpartition(".") namespace.tr!(".", "/") defaults = lookup_ancestors.map do |klass| :"#{i18n_scope}.attributes.#{klass.model_name.i18n_key}/#{namespace}.#{attribute}" end defaults << :"#{i18n_scope}.attributes.#{namespace}.#{attribute}" else defaults = lookup_ancestors.map do |klass| :"#{i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute}" end end raise_on_missing = .fetch(:raise, Translation.raise_on_missing_translations) defaults << :"attributes.#{attribute}" defaults << [:default] if [:default] defaults << MISSING_TRANSLATION unless raise_on_missing translation = I18n.translate(defaults.shift, count: 1, raise: raise_on_missing, **, default: defaults) translation = attribute.humanize if translation == MISSING_TRANSLATION translation end |