diff options
-rw-r--r-- | actionpack/lib/action_view/helpers/form_options_helper.rb | 16 | ||||
-rw-r--r-- | activesupport/lib/active_support/values/time_zone.rb | 8 |
2 files changed, 17 insertions, 7 deletions
diff --git a/actionpack/lib/action_view/helpers/form_options_helper.rb b/actionpack/lib/action_view/helpers/form_options_helper.rb index 8ead838d36..aeef3bba74 100644 --- a/actionpack/lib/action_view/helpers/form_options_helper.rb +++ b/actionpack/lib/action_view/helpers/form_options_helper.rb @@ -185,6 +185,9 @@ module ActionView # (long) list. (You can use TimeZone.us_zones as a convenience for # obtaining a list of the US time zones.) # + # The +selected+ parameter must be either +nil+, or a string that names + # a TimeZone. + # # By default, +model+ is the TimeZone constant (which can be obtained # in ActiveRecord as a value object). The only requirement is that the # +model+ parameter be an object that responds to #all, and returns @@ -195,16 +198,17 @@ module ActionView def time_zone_options_for_select(selected = nil, priority_zones = nil, model = TimeZone) zone_options = "" + zones = model.all + convert_zones = lambda { |list| list.map { |z| [ z.to_s, z.name ] } } + if priority_zones - zone_options += options_for_select(priority_zones, selected) + zone_options += options_for_select(convert_zones[priority_zones], selected) zone_options += "<option>-------------</option>\n" - zones = model.all.reject { |z| priority_zones.include?( z ) } - zone_options += options_for_select(zones, selected) - else - zone_options += options_for_select(model.all, selected) + zones = zones.reject { |z| priority_zones.include?( z ) } end + zone_options += options_for_select(convert_zones[zones], selected) zone_options end @@ -292,4 +296,4 @@ module ActionView end end end -end
\ No newline at end of file +end diff --git a/activesupport/lib/active_support/values/time_zone.rb b/activesupport/lib/active_support/values/time_zone.rb index 7766727a40..3f524c4759 100644 --- a/activesupport/lib/active_support/values/time_zone.rb +++ b/activesupport/lib/active_support/values/time_zone.rb @@ -37,8 +37,14 @@ class TimeZone adjust(Time.now) end + # Return the current date in this time zone. + def today + now.to_date + end + # Adjust the given time to the time zone represented by +self+. def adjust(time) + time = time.to_time offset = time.utc_offset time + utc_offset - offset end @@ -152,4 +158,4 @@ class TimeZone all.find_all { |z| z.name =~ US_ZONES } end end -end
\ No newline at end of file +end |