File tree 1 file changed +19
-8
lines changed
1 file changed +19
-8
lines changed Original file line number Diff line number Diff line change @@ -92,24 +92,35 @@ def render_in(view_context, &block)
92
92
@__vc_content_evaluated = false
93
93
@__vc_render_in_block = block
94
94
95
- self . parent = view_context
96
-
97
- top_level_parent = @_top_level_parent = parent &.top_level_parent || parent
98
- top_level_parent . output_buffer ||= ActionView ::OutputBuffer . new
99
- @output_buffer = top_level_parent . output_buffer
100
- top_level_parent . children << self
101
-
102
95
before_render
103
96
104
97
if render?
105
- capture { render_template_for ( @__vc_variant ) . to_s + _output_postamble }
98
+ if view_context . output_buffer
99
+ self . top_level_parent = view_context . top_level_parent || view_context
100
+ top_level_parent . output_buffer ||= ActionView ::OutputBuffer . new
101
+ @output_buffer = top_level_parent . output_buffer
102
+ top_level_parent . children << self
103
+ else
104
+ @output_buffer = ActionView ::OutputBuffer . new
105
+ end
106
+
107
+ __vc_fast_call_capture { render_template_for ( @__vc_variant ) . to_s + _output_postamble } . tap do
108
+ top_level_parent . children . delete ( self ) if top_level_parent
109
+ end
106
110
else
107
111
""
108
112
end
109
113
ensure
110
114
@current_template = old_current_template
111
115
end
112
116
117
+ def __vc_fast_call_capture
118
+ value = nil
119
+ with_output_buffer { value = yield }
120
+
121
+ ERB ::Util . html_escape ( value . to_s )
122
+ end
123
+
113
124
# EXPERIMENTAL: Optional content to be returned after the rendered template.
114
125
#
115
126
# @return [String]
You can’t perform that action at this time.
0 commit comments