Permalink
Browse files

options_from_collection_for_select helper takes html attributes

as the last element of the array
  • Loading branch information...
1 parent 2a07db7 commit 0778290b57433da3bcd707fce222b8f646b7de4f @nashby nashby committed Apr 11, 2013
View
@@ -1,4 +1,9 @@
## Rails 4.0.0 (unreleased) ##
+* Element of the collection for `options_from_collection_for_select` helper can
+ optionally contain html attributes as the last element of the array as
+ `options_for_select` helper.
+
+ *Vasiliy Ermolovich*
* Fix explicit names on multiple file fields. If a file field tag has
the multiple option, it is turned into an array field (appending `[]`),
@@ -380,7 +380,7 @@ def options_for_select(container, selected = nil)
# should produce the desired results.
def options_from_collection_for_select(collection, value_method, text_method, selected = nil)
options = collection.map do |element|
- [value_for_collection(element, text_method), value_for_collection(element, value_method)]
+ [value_for_collection(element, text_method), value_for_collection(element, value_method), option_html_attributes(element)]
end
selected, disabled = extract_selected_and_disabled(selected)
select_deselect = {
@@ -100,6 +100,13 @@ def test_collection_options_with_proc_for_text_method
)
end
+ def test_collection_options_with_element_attributes
+ assert_dom_equal(
+ "<option value=\"USA\" class=\"bold\">USA</option>",
+ options_from_collection_for_select([[ "USA", "USA", { :class => 'bold' } ]], :first, :second)
+ )
+ 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(

0 comments on commit 0778290

Please sign in to comment.