Method: ActionView::Helpers::FormOptionsHelper#time_zone_options_for_select
- Defined in:
- lib/action_view/helpers/form_options_helper.rb
#time_zone_options_for_select(selected = nil, priority_zones = nil, model = ::ActiveSupport::TimeZone) ⇒ Object
Returns a string of option tags for pretty much any time zone in the world. Supply a ActiveSupport::TimeZone name as selected to have it marked as the selected option tag. You can also supply an array of ActiveSupport::TimeZone objects as priority_zones, so that they will be listed above the rest of the (long) list. (You can use ActiveSupport::TimeZone.us_zones as a convenience for obtaining a list of the US time zones, or a Regexp to select the zones of your choice)
The selected parameter must be either nil, or a string that names a ActiveSupport::TimeZone.
By default, model is the ActiveSupport::TimeZone constant (which can be obtained in Active Record as a value object). The only requirement is that the model parameter be an object that responds to all, and returns an array of objects that represent time zones.
NOTE: Only the option tags are returned, you have to wrap this call in a regular HTML select tag.
480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 |
# File 'lib/action_view/helpers/form_options_helper.rb', line 480 def (selected = nil, priority_zones = nil, model = ::ActiveSupport::TimeZone) = "" zones = model.all convert_zones = lambda { |list| list.map { |z| [ z.to_s, z.name ] } } if priority_zones if priority_zones.is_a?(Regexp) priority_zones = model.all.find_all {|z| z =~ priority_zones} end += (convert_zones[priority_zones], selected) += "<option value=\"\" disabled=\"disabled\">-------------</option>\n" zones = zones.reject { |z| priority_zones.include?( z ) } end += (convert_zones[zones], selected) .html_safe end |