instance method human_attribute_name

Ruby on Rails 7.2.3

Since v3.0.20

Available in: v3.0.20 v3.1.12 v3.2.22.5 v4.0.13 v4.1.16 v4.2.9 v5.2.8.1 v6.0.6 v6.1.7.10 v7.0.10 v7.1.6 v7.2.3 v8.0.4 v8.1.2

Signature

human_attribute_name(attribute, options = {})

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.

Parameters

attribute req
options opt = {}
Source
# File activemodel/lib/active_model/translation.rb, line 46
    def human_attribute_name(attribute, options = {})
      attribute = attribute.to_s

      if attribute.include?(".")
        namespace, _, attribute = attribute.rpartition(".")
        namespace.tr!(".", "/")

        if attribute.present?
          key = "#{namespace}.#{attribute}"
          separator = "/"
        else
          key = namespace
          separator = "."
        end

        defaults = lookup_ancestors.map do |klass|
          :"#{i18n_scope}.attributes.#{klass.model_name.i18n_key}#{separator}#{key}"
        end
        defaults << :"#{i18n_scope}.attributes.#{key}"
        defaults << :"attributes.#{key}"
      else
        defaults = lookup_ancestors.map do |klass|
          :"#{i18n_scope}.attributes.#{klass.model_name.i18n_key}.#{attribute}"
        end
      end

      defaults << :"attributes.#{attribute}"
      defaults << options[:default] if options[:default]
      defaults << MISSING_TRANSLATION

      translation = I18n.translate(defaults.shift, count: 1, **options, default: defaults)
      if translation == MISSING_TRANSLATION
        translation = attribute.present? ? attribute.humanize : namespace.humanize
      end

      translation
    end

Defined in activemodel/lib/active_model/translation.rb line 46 · View on GitHub · Improve this page · Find usages on GitHub

Defined in ActiveModel::Translation

Type at least 2 characters to search.

↑↓ navigate · open · esc close