class Trestle::Table::Row::Renderer
Public Class Methods
new(row, table:, template:)
click to toggle source
# File lib/trestle/table/row.rb, line 16 def initialize(row, table:, template:) @row, @table, @template = row, table, template end
Public Instance Methods
columns()
click to toggle source
# File lib/trestle/table/row.rb, line 20 def columns @table.columns.map { |column| column.renderer(table: @table, template: @template) }.select(&:render?) end
options(instance)
click to toggle source
# File lib/trestle/table/row.rb, line 32 def options(instance) options = Trestle::Options.new if @table.admin && @table.autolink? && @table.admin.actions.include?(:show) options.merge!(data: { url: admin_url_for(instance) }) options.merge!(data: { behavior: "dialog" }) if @table.admin.form.dialog? end options.merge!(@row.options) options.merge!(@template.instance_exec(instance, &@row.block)) if @row.block options end
render(instance)
click to toggle source
# File lib/trestle/table/row.rb, line 26 def render(instance) @template.content_tag(:tr, options(instance)) do @template.safe_join(columns.map { |column| column.render(instance) }, "\n") end end
Protected Instance Methods
admin_url_for(instance)
click to toggle source
# File lib/trestle/table/row.rb, line 47 def admin_url_for(instance) @template.admin_url_for(instance, admin: @table.admin) end