class ActionTable::View
Attributes
rows[R]
Public Class Methods
new( columns:, records:, paginate: false, links: ActionTable.config.links, actions: ActionTable.config.actions )
click to toggle source
# File lib/action_table/view.rb, line 12 def initialize( columns:, records:, paginate: false, links: ActionTable.config.links, actions: ActionTable.config.actions ) @columns = Array(columns).map(&:to_s) @rows = records @paginate = paginate @links = Set.new(Array(links).map(&:to_s)).reject(&:empty?) @actions = Array(actions).map(&:to_s) end
Public Instance Methods
actions_header()
click to toggle source
add header column padding for actions
# File lib/action_table/view.rb, line 31 def actions_header @actions_header ||= [''] * @actions.length end
columns(record)
click to toggle source
# File lib/action_table/view.rb, line 35 def columns(record) attribute_columns = @columns.map do |name| title = record.public_send(name) if title.present? && @links.include?(name) link_to(title, record_path(record)) else title end end actions = t_actions.zip(@actions).map! do |data| title, name = data link_to(title, record_path(record, action: name)) end attribute_columns + actions end
controller()
click to toggle source
This must be defined for record_path
to work
# File lib/action_table/view.rb, line 62 def controller table_name end
headers()
click to toggle source
# File lib/action_table/view.rb, line 26 def headers @headers ||= @columns.map { |name| t_col(name) } end
paginate?()
click to toggle source
# File lib/action_table/view.rb, line 53 def paginate? @paginate end
paginate_param_name()
click to toggle source
# File lib/action_table/view.rb, line 57 def paginate_param_name "#{model_name}_page" end
record_path(record, action: nil)
click to toggle source
Contstruct path to record, i.e programs_path(record)
# File lib/action_table/view.rb, line 67 def record_path(record, action: nil) action = nil if action.to_s == 'show' path = [action, model_name, 'path'].compact.join('_') public_send(path, record) end
Private Instance Methods
model_name()
click to toggle source
# File lib/action_table/view.rb, line 97 def model_name table_name.singularize end
t_action(name)
click to toggle source
# File lib/action_table/view.rb, line 79 def t_action(name) name = name.to_s I18n.t("actions.#{name}", default: name.titleize) end
t_actions()
click to toggle source
# File lib/action_table/view.rb, line 75 def t_actions @actions.map { |name| t_action(name) } end
t_col(col_name)
click to toggle source
# File lib/action_table/view.rb, line 84 def t_col(col_name) if model_name? t_key = "activerecord.attributes.#{model_name}.#{col_name}" return I18n.t(t_key, default: col_name.titleize) end col_name.humanize.titleize end
table_name()
click to toggle source
# File lib/action_table/view.rb, line 93 def table_name rows.table_name end
table_name?()
click to toggle source
# File lib/action_table/view.rb, line 101 def table_name? rows.respond_to?(:table_name) end
Also aliased as: model_name?