module ActiveAdmin::ViewHelpers::DisplayHelper
Constants
- DISPLAY_NAME_FALLBACK
Public Instance Methods
association_methods_for(resource)
click to toggle source
# 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
boolean_attr?(resource, attr)
click to toggle source
# File lib/active_admin/view_helpers/display_helper.rb, line 89 def boolean_attr?(resource, attr) if resource.class.respond_to? :columns_hash column = resource.class.columns_hash[attr.to_s] and column.type == :boolean end end
display_name(resource)
click to toggle source
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.
# File lib/active_admin/view_helpers/display_helper.rb, line 17 def display_name(resource) render_in_context resource, display_name_method_for(resource) unless resource.nil? end
display_name_method_for(resource)
click to toggle source
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.
# 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
find_value(resource, attr)
click to toggle source
# File lib/active_admin/view_helpers/display_helper.rb, line 55 def find_value(resource, attr) if attr.is_a? Proc attr.call resource elsif attr =~ /\A(.+)_id\z/ && reflection_for(resource, $1.to_sym) resource.public_send $1 elsif resource.respond_to? attr resource.public_send attr elsif resource.respond_to? :[] resource[attr] end end
format_attribute(resource, attr)
click to toggle source
# File lib/active_admin/view_helpers/display_helper.rb, line 43 def format_attribute(resource, attr) value = find_value resource, attr if value.is_a?(Arbre::Element) value elsif boolean_attr?(resource, attr) Arbre::Context.new { status_tag value } else pretty_format value end end
pretty_format(object)
click to toggle source
Attempts to create a human-readable string for any object
# File lib/active_admin/view_helpers/display_helper.rb, line 68 def pretty_format(object) case object when String, Numeric, Symbol, Arbre::Element object.to_s when Date, Time localize object, format: active_admin_application.localize_format 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
reflection_for(resource, method)
click to toggle source
# File lib/active_admin/view_helpers/display_helper.rb, line 84 def reflection_for(resource, method) klass = resource.class klass.reflect_on_association method if klass.respond_to? :reflect_on_association end