diff --git a/lib/phlex/rails/helpers/options_for_select.rb b/lib/phlex/rails/helpers/options_for_select.rb index 91d7507..231b48e 100644 --- a/lib/phlex/rails/helpers/options_for_select.rb +++ b/lib/phlex/rails/helpers/options_for_select.rb @@ -1,9 +1,16 @@ # frozen_string_literal: true module Phlex::Rails::Helpers::OptionsForSelect + Never = Object.new + extend Phlex::Rails::HelperMacros - # @!method options_for_select(...) - # @return [nil] - register_output_helper :options_for_select + def options_for_select(...) + context = @_context + return if context.fragments && !context.in_target_fragment + + raw helpers.options_for_select(...) + + Never + end end diff --git a/lib/phlex/rails/helpers/select_tag.rb b/lib/phlex/rails/helpers/select_tag.rb index a634a3a..7fecad7 100644 --- a/lib/phlex/rails/helpers/select_tag.rb +++ b/lib/phlex/rails/helpers/select_tag.rb @@ -3,7 +3,22 @@ module Phlex::Rails::Helpers::SelectTag extend Phlex::Rails::HelperMacros - # @!method select_tag(...) - # @return [nil] - register_output_helper :select_tag + def select_tag(*args, **kwargs, &block) + context = @_context + return if context.fragments && !context.in_target_fragment + + if args[1] == Phlex::Rails::Helpers::OptionsForSelect::Never + raise ArgumentError.new(<<~MESSAGE + Figure out how to explain this problem here. + MESSAGE + end + + output = if block + helpers.select_tag(*args, **kwargs) { capture(&block) } + else + helpers.select_tag(*args, **kwargs) + end + + raw(output) + end end