From 9bfd968bed1a76888ec82e0f7b524a989d0e1108 Mon Sep 17 00:00:00 2001 From: Vipul A M Date: Mon, 9 May 2016 02:36:58 +0530 Subject: Confirm with the specification when generating emtpy option for select with `include_blank: true` option. We now generate option with empty label, example: `` for include_blank: true. This is only done, if content is missing on the option, and we providing the value from this option. Fixes #24816 --- actionview/CHANGELOG.md | 17 +++++++++++++++++ actionview/lib/action_view/helpers/form_tag_helper.rb | 4 +++- actionview/test/template/form_tag_helper_test.rb | 10 +++++----- 3 files changed, 25 insertions(+), 6 deletions(-) (limited to 'actionview') diff --git a/actionview/CHANGELOG.md b/actionview/CHANGELOG.md index 1d7ec77e70..0b40699c77 100644 --- a/actionview/CHANGELOG.md +++ b/actionview/CHANGELOG.md @@ -1,2 +1,19 @@ +* `select_tag`'s `include_blank` option for generation for blank option tag, now adds an empty space label, + when the value as well as content for option tag are empty, so that we confirm with html specification. + Ref: https://www.w3.org/TR/html5/forms.html#the-option-element. + + Generation of option before: + + ```html + + ``` + + Generation of option after: + + ```html + + ``` + + *Vipul A M * Please check [5-0-stable](https://github.com/rails/rails/blob/5-0-stable/actionview/CHANGELOG.md) for previous changes. diff --git a/actionview/lib/action_view/helpers/form_tag_helper.rb b/actionview/lib/action_view/helpers/form_tag_helper.rb index cfff0bef5d..82f2fd30c7 100644 --- a/actionview/lib/action_view/helpers/form_tag_helper.rb +++ b/actionview/lib/action_view/helpers/form_tag_helper.rb @@ -134,13 +134,15 @@ module ActionView if options.include?(:include_blank) include_blank = options.delete(:include_blank) + options_for_blank_options_tag = { value: '' } if include_blank == true include_blank = '' + options_for_blank_options_tag[:label] = ' ' end if include_blank - option_tags = content_tag("option".freeze, include_blank, value: '').safe_concat(option_tags) + option_tags = content_tag("option".freeze, include_blank, options_for_blank_options_tag).safe_concat(option_tags) end end diff --git a/actionview/test/template/form_tag_helper_test.rb b/actionview/test/template/form_tag_helper_test.rb index 7b93c8dc29..5b0b708618 100644 --- a/actionview/test/template/form_tag_helper_test.rb +++ b/actionview/test/template/form_tag_helper_test.rb @@ -239,8 +239,8 @@ class FormTagHelperTest < ActionView::TestCase end def test_select_tag_with_include_blank - actual = select_tag "places", raw(""), :include_blank => true - expected = %() + actual = select_tag "places", raw(""), include_blank: true + expected = %() assert_dom_equal expected, actual end @@ -269,14 +269,14 @@ class FormTagHelperTest < ActionView::TestCase end def test_select_tag_with_prompt_and_include_blank - actual = select_tag "places", raw(""), :prompt => "string", :include_blank => true - expected = %() + actual = select_tag "places", raw(""), prompt: "string", include_blank: true + expected = %() assert_dom_equal expected, actual end def test_select_tag_with_nil_option_tags_and_include_blank actual = select_tag "places", nil, :include_blank => true - expected = %() + expected = %() assert_dom_equal expected, actual end -- cgit v1.2.3