diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index a0cf18b43..4e6a11460 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -10,6 +10,10 @@ nav_order: 6 ## main +* Return `html_safe` empty string from `render_in` when `render?` is false. + + *Copilot* + ## 4.5.0 * Fix initialization ordering issue causing missing asset errors in Sprockets. diff --git a/lib/view_component/base.rb b/lib/view_component/base.rb index 5fee45ea1..b251991d7 100644 --- a/lib/view_component/base.rb +++ b/lib/view_component/base.rb @@ -160,7 +160,7 @@ def render_in(view_context, &block) value else - "" + "".html_safe end ensure view_context.instance_variable_set(:@virtual_path, @old_virtual_path) diff --git a/test/sandbox/test/rendering_test.rb b/test/sandbox/test/rendering_test.rb index c57bf6ee7..b394bba4d 100644 --- a/test/sandbox/test/rendering_test.rb +++ b/test/sandbox/test/rendering_test.rb @@ -877,6 +877,12 @@ def test_does_not_render_passed_in_content_if_render_is_false assert total < 1 end + def test_render_in_returns_html_safe_string_when_render_is_false + render_inline(ConditionalRenderComponent.new(should_render: false)) + + assert_predicate @rendered_content, :html_safe? + end + def test_collection_parameter_does_not_require_compile dynamic_component = Class.new(ViewComponent::Base) do