Module: ActiveAdmin::ViewHelpers::DisplayHelper

Included in:
ActiveAdmin::ViewHelpers
Defined in:
lib/active_admin/view_helpers/display_helper.rb

Constant Summary

DISPLAY_NAME_FALLBACK =
->{
  name, klass = "", self.class
  name << klass.model_name.human         if klass.respond_to? :model_name
  name << " ##{send(klass.primary_key)}" if klass.respond_to? :primary_key
  name.present? ? name : to_s
}

Instance Method Summary (collapse)

Instance Method Details

- (Object) association_methods_for(resource)



38
39
40
41
# File 'lib/active_admin/view_helpers/display_helper.rb', line 38

def association_methods_for(resource)
  return [] unless resource.class.respond_to? :reflect_on_all_associations
  resource.class.reflect_on_all_associations.map(&:name)
end

- (Object) display_name(resource)

Attempts to call any known display name methods on the resource. See the setting in `application.rb` for the list of methods and their priority.



17
18
19
# File 'lib/active_admin/view_helpers/display_helper.rb', line 17

def display_name(resource)
  render_in_context resource, display_name_method_for(resource) if resource
end

- (Object) display_name_method_for(resource)

Looks up and caches the first available display name method. To prevent conflicts, we exclude any methods that happen to be associations. If no methods are available and we're about to use the Kernel's `to_s`, provide our own.



24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/active_admin/view_helpers/display_helper.rb', line 24

def display_name_method_for(resource)
  @@display_name_methods_cache ||= {}
  @@display_name_methods_cache[resource.class] ||= begin
    methods = active_admin_application.display_name_methods - association_methods_for(resource)
    method  = methods.detect{ |method| resource.respond_to? method }

    if method != :to_s || resource.method(method).source_location
      method
    else
      DISPLAY_NAME_FALLBACK
    end
  end
end

- (Object) pretty_format(object)

Attempts to create a human-readable string for any object



44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/active_admin/view_helpers/display_helper.rb', line 44

def pretty_format(object)
  case object
  when String, Numeric, Arbre::Element
    object.to_s
  when Date, Time
    localize object, format: :long
  else
    if defined?(::ActiveRecord) && object.is_a?(ActiveRecord::Base) ||
       defined?(::Mongoid)      && object.class.include?(Mongoid::Document)
      auto_link object
    else
      display_name object
    end
  end
end