Я сделал так, что более удобно, я думаю
@total_timezones = {}
ActiveSupport::TimeZone.all.uniq(&:utc_offset).each{ |item|
@total_timezones.merge!({"(UTC"+ item.formatted_offset.to_s + ") " + item.name => item.utc_offset})
}
А в эрб
<div class="col-xs-4">
<select class="form-control" name="tz_offset">
<%= options_for_select(@total_timezones.each, @timeline_emails.tz_offset) %>
</select>
</div>
И еще один пример без передней части, который включает в себя целые часовые пояса, включая острова Кирибати +14
, который выходит за пределы наиболее часто используемых стандартных часовых поясов.
TZInfo::Timezone.all_country_zone_identifiers.each { |item| @total_timezones.merge!({"(UTC" + ActiveSupport::TimeZone[item].formatted_offset + ") " + item => ActiveSupport::TimeZone[item].formatted_offset}) }
@total_timezones = @total_timezones.sort_by { |key, value| value.scan(/-?\d+/).join.to_i }