Merge pull request #9330 from bdmac/time_zone_select_dup
Fix time_zone_options_for_select to not mutate TimeZones array
This commit is contained in:
commit
c3f1b1d3cd
|
@ -1,5 +1,13 @@
|
|||
## Rails 4.0.0 (unreleased) ##
|
||||
|
||||
* Fix `time_zone_options_for_select` to call `dup` on the returned TimeZone array.
|
||||
|
||||
Previously if you supplied :priority_zones options to `time_zone_options_for_select`
|
||||
the memoized ActiveSupport::TimeZone.all array would be mutated. Calling
|
||||
`dup` prevents mutation of the main TimeZones array.
|
||||
|
||||
*Brian McManus*
|
||||
|
||||
* Remove support for parsing YAML parameters from request.
|
||||
|
||||
*Aaron Patterson*
|
||||
|
|
|
@ -560,7 +560,7 @@ module ActionView
|
|||
def time_zone_options_for_select(selected = nil, priority_zones = nil, model = ::ActiveSupport::TimeZone)
|
||||
zone_options = "".html_safe
|
||||
|
||||
zones = model.all
|
||||
zones = model.all.dup
|
||||
convert_zones = lambda { |list| list.map { |z| [ z.to_s, z.name ] } }
|
||||
|
||||
if priority_zones
|
||||
|
|
|
@ -416,6 +416,13 @@ class FormOptionsHelperTest < ActionView::TestCase
|
|||
"<option value=\"D\">D</option>",
|
||||
opts
|
||||
end
|
||||
|
||||
def test_time_zone_options_with_priority_zones_does_not_mutate_time_zones
|
||||
original_zones = ActiveSupport::TimeZone.all.dup
|
||||
zones = [ ActiveSupport::TimeZone.new( "B" ), ActiveSupport::TimeZone.new( "E" ) ]
|
||||
opts = time_zone_options_for_select( nil, zones )
|
||||
assert_equal original_zones, ActiveSupport::TimeZone.all
|
||||
end
|
||||
|
||||
def test_time_zone_options_returns_html_safe_string
|
||||
assert time_zone_options_for_select.html_safe?
|
||||
|
|
Loading…
Reference in New Issue