Skip to content

Commit

Permalink
Merge pull request #12287 from bogdan/select-with-selected-option
Browse files Browse the repository at this point in the history
Fix some edge cases for select with selected option
Conflicts:
	actionview/CHANGELOG.md
  • Loading branch information
rafaelfranca committed Sep 23, 2013
1 parent 674e88a commit eb45805
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 1 deletion.
4 changes: 4 additions & 0 deletions actionpack/CHANGELOG.md
@@ -1,5 +1,9 @@
## unreleased ## ## unreleased ##


* Fix some edge cases for AV `select` helper with `:selected` option

*Bogdan Gusiev*

* Handle `:namespace` form option in collection labels * Handle `:namespace` form option in collection labels


*Vasiliy Ermolovich* *Vasiliy Ermolovich*
Expand Down
3 changes: 2 additions & 1 deletion actionpack/lib/action_view/helpers/tags/base.rb
Expand Up @@ -119,7 +119,8 @@ def select_content_tag(option_tags, options, html_options)
html_options = html_options.stringify_keys html_options = html_options.stringify_keys
add_default_name_and_id(html_options) add_default_name_and_id(html_options)
options[:include_blank] ||= true unless options[:prompt] || select_not_required?(html_options) options[:include_blank] ||= true unless options[:prompt] || select_not_required?(html_options)
select = content_tag("select", add_options(option_tags, options, value(object)), html_options) value = options.fetch(:selected) { value(object) }
select = content_tag("select", add_options(option_tags, options, value), html_options)


if html_options["multiple"] && options.fetch(:include_hidden, true) if html_options["multiple"] && options.fetch(:include_hidden, true)
tag("input", :disabled => html_options["disabled"], :name => html_options["name"], :type => "hidden", :value => "") + select tag("input", :disabled => html_options["disabled"], :name => html_options["name"], :type => "hidden", :value => "") + select
Expand Down
16 changes: 16 additions & 0 deletions actionpack/test/template/form_options_helper_test.rb
Expand Up @@ -793,6 +793,22 @@ def test_select_with_disabled_value
) )
end end


def test_select_not_existing_method_with_selected_value
@post = Post.new
assert_dom_equal(
"<select id=\"post_locale\" name=\"post[locale]\"><option value=\"en\">en</option>\n<option value=\"ru\" selected=\"selected\">ru</option></select>",
select("post", "locale", %w( en ru ), :selected => 'ru')
)
end

def test_select_with_prompt_and_selected_value
@post = Post.new
assert_dom_equal(
"<select id=\"post_category\" name=\"post[category]\"><option value=\"one\">one</option>\n<option selected=\"selected\" value=\"two\">two</option></select>",
select("post", "category", %w( one two ), :selected => 'two', :prompt => true)
)
end

def test_select_with_disabled_array def test_select_with_disabled_array
@post = Post.new @post = Post.new
@post.category = "<mus>" @post.category = "<mus>"
Expand Down

0 comments on commit eb45805

Please sign in to comment.