我的观点(haml):
= f.time_zone_select :time_zone, nil, {}, class: 'form-control'
呈现给:
...
<option value="Ljubljana">(GMT+01:00) Ljubljana</option>
<option value="Madrid">(GMT+01:00) Madrid</option>
<option value="Paris">(GMT+01:00) Paris</option>
<option value="Prague">(GMT+01:00) Prague</option>
...
创建记录时,我想将:time_zone
属性设置为用户的当前时区。有几种方法可以做到这一点,但经过研究,我发现了gem timezone_local
或JS库jstz
最常见的方法。
无论哪种方式,所有这些开源库似乎都使用与rails不同的模式,例如巴黎时区定义为:
欧洲/巴黎
但是,Rails中的TimeZone对象使用
巴黎
当我想用用户的当前时区创建记录时,这会导致不一致,因为它不匹配。我需要使用rails来使用与jstz
相同的模式,反之亦然,但我不希望gsub
字符串在这里或类似。
这里最好的方法是什么?
答案 0 :(得分:0)
您可以使用Draper来修改{% for int in result.results %}
Interfaces: Interface-{{ int.item }}
Data: {{ int.stdout }}
{% endfor %}
和all
(name
使用的列表和值方法):
time_zone_select
然后在标签中使用class TimeZoneDecorator < Draper::Decorator
decorates ActiveSupport::TimeZone
delegate_all
def self.all
TimeZoneDecorator.decorate_collection(ActiveSupport::TimeZone.all)
end
def self.us_zones
TimeZoneDecorator.decorate_collection(ActiveSupport::TimeZone.us_zones)
end
# other custom collection methods
def name
tzinfo.name # "Europe/Paris" instead of "Paris"
end
end
选项:
model