Module: Pinmark::Hooks::ErbPartial
- Defined in:
- lib/pinmark/hooks/erb_partial.rb
Overview
Prepended into ActionView::PartialRenderer.
Rails 8.1 ‘render_partial_template(view, locals, template, layout, block)` is private and returns an `ActionView::AbstractRenderer::RenderedTemplate` whose `body` is the rendered HTML string. To preserve the contract for callers (collection assembly, layout wrapping) the override re-wraps the body and returns a fresh RenderedTemplate.
Instance Method Summary collapse
Instance Method Details
#render_partial_template(view, locals, template, layout, block) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/pinmark/hooks/erb_partial.rb', line 13 def render_partial_template(view, locals, template, layout, block) rendered = super return rendered unless Pinmark.active? return rendered unless rendered.respond_to?(:body) && rendered.respond_to?(:template) identifier = template.respond_to?(:identifier) ? template.identifier.to_s : template.to_s relative = relative_to_root(identifier) component = "partial:#{File.basename(relative)}" source = "#{relative}:1" wrapped_body = Pinmark::Wrapper.wrap(component:, source:) do rendered.body.to_s end ::ActionView::AbstractRenderer::RenderedTemplate.new(wrapped_body, rendered.template) end |