diff --git a/lib/simple_form/inputs/boolean_input.rb b/lib/simple_form/inputs/boolean_input.rb index 8dfb29fb..8b52d85a 100644 --- a/lib/simple_form/inputs/boolean_input.rb +++ b/lib/simple_form/inputs/boolean_input.rb @@ -60,7 +60,7 @@ module SimpleForm # we need the hidden field to be *outside* the label (otherwise it # generates invalid html - html5 only). def build_hidden_field_for_checkbox - return "" unless include_hidden? + return "" if !include_hidden? || !unchecked_value options = { value: unchecked_value, id: nil, disabled: input_html_options[:disabled] } options[:name] = input_html_options[:name] if input_html_options.has_key?(:name) diff --git a/test/inputs/boolean_input_test.rb b/test/inputs/boolean_input_test.rb index fa50170c..f0398dec 100644 --- a/test/inputs/boolean_input_test.rb +++ b/test/inputs/boolean_input_test.rb @@ -146,6 +146,14 @@ class BooleanInputTest < ActionView::TestCase end end + test 'input with nested style does not include hidden field when unchecked_value is false' do + swap SimpleForm, boolean_style: :nested do + with_input_for @user, :active, :boolean, unchecked_value: false + assert_select "label.boolean > input.boolean" + assert_no_select "input[type=hidden] + label.boolean" + end + end + test 'input boolean works using :input only in wrapper config (no label_input)' do swap_wrapper do with_input_for @user, :active, :boolean