1
0
Fork 0
mirror of https://github.com/rails/rails.git synced 2022-11-09 12:12:34 -05:00

Allow strings to be sent as collection to select.

Signed-off-by: Michael Koziarski <michael@koziarski.com>
This commit is contained in:
José Valim 2009-04-01 12:44:56 +02:00 committed by Michael Koziarski
parent b6bac73b28
commit eb021707f5
2 changed files with 24 additions and 0 deletions

View file

@ -230,6 +230,8 @@ module ActionView
#
# NOTE: Only the option tags are returned, you have to wrap this call in a regular HTML select tag.
def options_for_select(container, selected = nil)
return container if String === container
container = container.to_a if Hash === container
selected, disabled = extract_selected_and_disabled(selected)

View file

@ -80,6 +80,14 @@ class FormOptionsHelperTest < ActionView::TestCase
)
end
def test_string_options_for_select
options = "<option value=\"Denmark\">Denmark</option><option value=\"USA\">USA</option><option value=\"Sweden\">Sweden</option>"
assert_dom_equal(
options,
options_for_select(options)
)
end
def test_array_options_for_select
assert_dom_equal(
"<option value=\"&lt;Denmark&gt;\">&lt;Denmark&gt;</option>\n<option value=\"USA\">USA</option>\n<option value=\"Sweden\">Sweden</option>",
@ -324,6 +332,20 @@ class FormOptionsHelperTest < ActionView::TestCase
)
end
def test_select_under_fields_for_with_string_and_given_prompt
@post = Post.new
options = "<option value=\"abe\">abe</option><option value=\"mus\">mus</option><option value=\"hest\">hest</option>"
fields_for :post, @post do |f|
concat f.select(:category, options, :prompt => 'The prompt')
end
assert_dom_equal(
"<select id=\"post_category\" name=\"post[category]\"><option value=\"\">The prompt</option>\n#{options}</select>",
output_buffer
)
end
def test_select_with_blank
@post = Post.new
@post.category = "<mus>"