class ActiveAdmin::Views::TableFor::Column
def initialize(*args, &block)
def initialize(*args, &block) @options = args.extract_options! @title = args[0] @title_id = @title.to_s.parameterize(separator: "_") if @title.present? && !title.is_a?(Arbre::Element) @html_class = @options.delete(:class) @data = args[1] || args[0] @data = block if block @resource_class = args[2] end
def pretty_title
def pretty_title if @title.is_a? Symbol default = @title.to_s.titleize if @options[:i18n].respond_to? :human_attribute_name @title = @options[:i18n].human_attribute_name @title, default: default else default end else @title end end
def sort_column_name
def sort_column_name @data.is_a?(Symbol) ? @data.to_s : @title.to_s end
def sort_key
column :username, sortable: 'other_column_to_sort_on'
to the sortable option:
You can set the sort key by passing a string or symbol
# => Sort key will be set to 'username'
column :username
Defaults to the column's method if its a symbol
Returns the key to be used for sorting this column
def sort_key # If boolean or nil, use the default sort key. if @options[:sortable].nil? || @options[:sortable] == true || @options[:sortable] == false sort_column_name else @options[:sortable].to_s end end
def sortable?
def sortable? if @options.has_key?(:sortable) !!@options[:sortable] elsif @resource_class @resource_class.column_names.include?(sort_column_name) else @title.present? end end