首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4格式化部分的DateTime字段

Rails 4格式化部分的DateTime字段
EN

Stack Overflow用户
提问于 2014-07-22 09:54:25
回答 1查看 505关注 0票数 0

我正在UTC中存储一个datetime字段,但是用户可以在不同的时区中输入它。我通过JavaScript设置cookie来配置时区。以下是我的ApplicationController代码:

代码语言:javascript
复制
before_filter :set_timezone

def set_timezone
  if !cookies["time_zone"].to_s.blank?
    Time.zone = cookies["time_zone"].to_s
  end
end

我使用另一个控制器表单上的嵌套属性存储时间。下面是通过simple_form和simple_fields_for呈现给字段的部分,并以‘f’形式传递:

代码语言:javascript
复制
<div class="row fieldset">
  <div class="col-sm-3">
    <%= f.input :day,  collection: days, selected: f.object.day %>
  </div>
  <div class="col-sm-3">
    <%= f.input :open, as: :string %>
  </div>
  <div class="col-sm-3">
    <%= f.input :close, as: :string %>
  </div>
  <div class="col-sm-3">
    <%= f.input :_destroy, as: :hidden %>
    <%= link_to "remove", '#', class: "remove_fields" %>
  </div>
</div>

时区转换工作正常。我可以在JavaScript检测到的时区中输入时间,然后将它们存储在UTC中。它还在检测到的时区中显示它们,但打印出完整的格式:

代码语言:javascript
复制
2014-07-22 05:00:00 -0700

我相信字段在到达视图时是字符串,这就是为什么将输入字段的值设置为以下内容的原因:

代码语言:javascript
复制
<%= f.input :close, as: :string, input_html: { value: f.object.close.to_s(:short) } %>

我只是在测试“短”格式选项。我想我可以在以后再添加一个定制的。

我是否需要用嵌套属性格式化控制器中的时间?或者,我可以在处理时间存储的模型中格式化它们吗?如果你需要更多的信息或代码,请告诉我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-04 05:54:13

我不确定这些是否是最好的选择,但我发现了两个:

1)将实例变量传递给具有字段值的分部。实例变量允许我使用to_s(:custom_format)格式化日期时间字段。

2)我使用的是简单的形式,发现使用它们的时间格式效果很好。例如:

<%= f.input :close, as: :time, ampm: true, minute_step: 15 %>

您可以将任何选择参数传递给简单的表单。

第二个选项将子午线选项(AM/PM)添加到hour字段,这对我来说有点奇怪。但这似乎是这两种方法中最简单的一种,所以我现在就同意了。

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

https://stackoverflow.com/questions/24884189

复制
相关文章

相似问题

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