Module: ViewComponent::CaptureCompatibility
- Defined in:
- lib/view_component/capture_compatibility.rb
Overview
CaptureCompatibility is a module that patches #capture to fix issues related to ViewComponent and functionality that relies on ‘capture` like forms, capture itself, turbo frames, etc.
This underlying incompatibility with ViewComponent and capture is that several features like forms keep a reference to the primary ‘ActionView::Base` instance which has its own @output_buffer. When `#capture` is called on the original `ActionView::Base` instance while evaluating a block from a ViewComponent the @output_buffer is overridden in the ActionView::Base instance, and not the component. This results in a double render due to `#capture` implementation details.
To resolve the issue, we override ‘#capture` so that we can delegate the `capture` logic to the ViewComponent that created the block.
Defined Under Namespace
Modules: InstanceMethods
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
19 20 21 22 23 24 25 26 27 |
# File 'lib/view_component/capture_compatibility.rb', line 19 def self.included(base) return if base < InstanceMethods base.class_eval do alias_method :original_capture, :capture end base.prepend(InstanceMethods) end |