Ruby on rails RubyonRails中的时区选择字段
我想输出其中一个选择字段,供用户选择时区。我的用户模型将时区保存为以秒为单位的整数。但如果这不实际,我可以改变 大概是这样的:Ruby on rails RubyonRails中的时区选择字段,ruby-on-rails,user-interface,timezone,Ruby On Rails,User Interface,Timezone,我想输出其中一个选择字段,供用户选择时区。我的用户模型将时区保存为以秒为单位的整数。但如果这不实际,我可以改变 大概是这样的: <select> ... <option value="x">+9:00 (Darwin, Australia)</option> <option value="x">+10:00 (Sydney, Australia)</option> ... </select> ... +9
<select>
...
<option value="x">+9:00 (Darwin, Australia)</option>
<option value="x">+10:00 (Sydney, Australia)</option>
...
</select>
...
+9:00(澳大利亚达尔文)
+10:00(澳大利亚悉尼)
...
我看到RubyonRails中有一个时间类。。。有人能给我指出正确的方向吗?你可以将时区存储为字符串
def self.up
add_column :users, :time_zone, :string, :limit => 255, :default => "UTC"
end
使用此选项可显示选择框
<%= f.time_zone_select :time_zone %>
时区和名称=[]
TZInfo::时区。所有链接的分区。每个都有|
时区差异和名称tz.current\u period.utc\u总偏移量/(60*60)}
结束
sorted_timezones=timezones_diff_and_name.sort_by{| timezone | timezone.values[0]}
@时区={}
已排序的时区。每个都有|
差异=tz.值[0]
name=tz.keys[0]
@时区[“(GMT{diff>0?'+':''}{diff.to_s}h){name}]=name
结束
谁有更好/更清洁的解决方案?我要睡觉了:)是的,我以前看到过这个链接!谢谢你的帮助,太好了。这就是我要找的。谢谢。该链接似乎过时了,正在将流量指向希腊电影评论?
timezones_diff_and_name = []
TZInfo::Timezone.all_linked_zones.each do |tz|
timezones_diff_and_name << {tz.name => tz.current_period.utc_total_offset / (60 * 60)}
end
sorted_timezones = timezones_diff_and_name.sort_by { |timezone| timezone.values[0] }
@timezones = {}
sorted_timezones.each do |tz|
diff = tz.values[0]
name = tz.keys[0]
@timezones["(GMT#{diff > 0 ? '+':''}#{diff.to_s}h) #{name}"] = name
end