在SimpleForm中,可以创建一个时区输入:
= simple_form_for @user do |f|
= f.input :time_zone, label: 'My time zone'然而,简单表单放入表单中的值对于Postgres无效:
<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 & Canada)">(GMT-08:00) Pacific Time (US & Canada)</option>
<option value="Tijuana">(GMT-08:00) Tijuana</option>
...实际值需要与散列对应:
{"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字段具有更正“区域/局部性”格式的值?
发布于 2013-11-17 20:23:40
Rails时区是标准TZDB的过度简化。如果您可以避免使用它们,我将使用完整的IANA TZDB区域。在Ruby中,这在TZInfo宝石中是最简单的。
如果您被它们困住了,那么您可以使用来自ActiveSupport::TimeZone的ActiveSupport::TimeZone常量,如在这些文档中所示。这将使您能够将Rails标识符与正常的区域/本地格式关联起来。
还请参阅时区标记wiki on Rails时区底部的部分。
发布于 2017-06-20 12:07:50
你可以试试这个把戏:
f.input :time_zone, model: TZInfo::Timezone但这不会按您的需要呈现选项名,只呈现值。
https://stackoverflow.com/questions/20035103
复制相似问题