Sha256: 5c7e82a52783bed78f1b783ce9c03b0c1fc4ff2ecbcb2c745da0c3059b70b17d
Contents?: true
Size: 1.34 KB
Versions: 4
Compression:
Stored size: 1.34 KB
Contents
module DiningTable module Columns class Column attr_accessor :name, :table, :options, :block def initialize( table, name, options = {}, &block) self.table = table self.name = name self.options = options self.block = block end def value(object) if block block.call(object, self) else object.send(name) if object.respond_to?(name) end end def header @header ||= begin label = determine_label(:header) return label if label object_class = table.collection.first.class if table.collection.first object_class ||= table.object_class if !object_class object_class.human_attribute_name( name ) if object_class && object_class.respond_to?( :human_attribute_name ) end end def footer @footer ||= determine_label(:footer) end def options_for(identifier) options[ identifier ] || { } end private def determine_label( name ) if options[ name ] label_ = options[ name ] label_ = label_.call if label_.respond_to?(:call) label_ = label_.to_s if label_.respond_to?(:to_s) return label_ end end end end end
Version data entries
4 entries across 4 versions & 1 rubygems