首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使simple_form时区具有对postgres有效的值

如何使simple_form时区具有对postgres有效的值
EN

Stack Overflow用户
提问于 2013-11-17 19:29:12
回答 2查看 2.9K关注 0票数 3

在SimpleForm中,可以创建一个时区输入:

代码语言:javascript
复制
= simple_form_for @user do |f|
  = f.input :time_zone, label: 'My time zone'

然而,简单表单放入表单中的值对于Postgres无效:

代码语言:javascript
复制
<option value="American Samoa">(GMT-11:00) American Samoa</option>
<option value="International Date Line West">(GMT-11:00) International Date Line West</option>
<option value="Midway Island">(GMT-11:00) Midway Island</option>
<option value="Hawaii">(GMT-10:00) Hawaii</option>
<option value="Alaska">(GMT-09:00) Alaska</option>
<option value="Pacific Time (US &amp; Canada)">(GMT-08:00) Pacific Time (US &amp; Canada)</option>
<option value="Tijuana">(GMT-08:00) Tijuana</option>
...

实际值需要与散列对应:

代码语言:javascript
复制
{"International Date Line West" => "Pacific/Midway", 
"Midway Island" => "Pacific/Midway", 
"American Samoa" => "Pacific/Pago_Pago", 
"Hawaii" => "Pacific/Honolulu", 
"Alaska" => "America/Juneau", 
"Pacific Time (US & Canada)" => "America/Los_Angeles", 
"Tijuana" => "America/Tijuana",
...}

如何使simple_form time_zone字段具有更正“区域/局部性”格式的值?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-11-17 20:23:40

Rails时区是标准TZDB的过度简化。如果您可以避免使用它们,我将使用完整的IANA TZDB区域。在Ruby中,这在TZInfo宝石中是最简单的。

如果您被它们困住了,那么您可以使用来自ActiveSupport::TimeZoneActiveSupport::TimeZone常量,如在这些文档中所示。这将使您能够将Rails标识符与正常的区域/本地格式关联起来。

还请参阅时区标记wiki on Rails时区底部的部分。

票数 4
EN

Stack Overflow用户

发布于 2017-06-20 12:07:50

你可以试试这个把戏:

代码语言:javascript
复制
f.input :time_zone, model: TZInfo::Timezone

但这不会按您的需要呈现选项名,只呈现值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20035103

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档