rails--rails/actionview/lib/action_view/renderer/object_renderer.rb

35 lines
892 B
Ruby

# frozen_string_literal: true
module ActionView
class ObjectRenderer < PartialRenderer # :nodoc:
include ObjectRendering
def initialize(lookup_context, options)
super
@object = nil
@local_name = nil
end
def render_object_with_partial(object, partial, context, block)
@object = object
@local_name = local_variable(partial)
render(partial, context, block)
end
def render_object_derive_partial(object, context, block)
path = partial_path(object, context)
render_object_with_partial(object, path, context, block)
end
private
def template_keys(path)
super + [@local_name]
end
def render_partial_template(view, locals, template, layout, block)
locals[@local_name || template.variable] = @object
super(view, locals, template, layout, block)
end
end
end