繁体   English   中英

为什么在编辑资源时Rails会破坏时区?

Why does Rails screw up timezones when I am editing a resource?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

产生此步骤:

prompt>rails test_app
prompt>cd test_app
prompt>script/generate scaffold date_test my_date:datetime
prompt>rake db:migrate

现在编辑您的app/views/date_tests/edit.html.erb

<h1>Editing date_test</h1>

<% form_for(@date_test) do |f| %>
  <%= f.error_messages %>
  <p>
    RIGHT!<br/>
    <%= text_field_tag @date_test, f.object.my_date %>
  </p>
  <p>
    WRONG!<br />
    <%= f.text_field :my_date %>
  </p>
  <p>
    <%= f.submit 'Update' %>
  </p>
<% end %>

<%= link_to 'Show', @date_test %> |
<%= link_to 'Back', date_tests_path %>

现在编辑您的config/environment.rb

#add this
config.time_zone = 'Central Time (US & Canada)'

这重现了我在实际应用中遇到的问题。 我的应用程序存在的问题是,我将日期存储在隐藏字段中并呈现“用户友好”版本。 创建资源可以很好地工作,但是一旦我尝试对其进行编辑,时间就会发生变化(它会增加当前时区配置与UTC之间的差异)。 转到http:// localhost:3000 / date_tests / new并保存时间,然后再进行编辑,您将对日期/时间有两种不同的表示方式,一种表示会错误地保存,另一种则会正确保存。

编辑:一个人可能会问为什么不只使用一个可行的方法。 问题是我正在使用嵌套属性,所以我不能完全做到这一点。 我尝试这样做:

# from my real app:
<% appt.fields_for :time_slot do |ts| %>
  <%=h ts.object.start_at.strftime('%T') %>
  <%= hidden_field ts.object.start_at, :start_at %>
  <%= hidden_field ts.object.end_at, :end_at %>
<% end %>

但html结果为:

<div>

      10:00:00
      <input id="2010-05-30_10:00:00_-0500_start_at" name="2010-05-30 10:00:00 -0500[start_at]" type="hidden">
      <input id="2010-05-30_10:10:00_-0500_end_at" name="2010-05-30 10:10:00 -0500[end_at]" type="hidden">
      <input id="appointment_block_appointments_attributes_0_time_slot_attributes_id" name="appointment_block[appointments_attributes][0][time_slot_attributes][id]" type="hidden" value="95">
</div>
1 个回复

好的,事实证明我需要重写“约定”,并具有以下内容:

<%= ts.hidden_field :start_at, :value => ts.object.start_at %>

使用:value也会给我时区差异,这解决了我的问题!

1 为什么将JavaScript或CSS在rails中滚动与布局拧在一起?

现在,从开发过渡到过渡时,有几次我被JavaScript和样式表汇总到单个文件中时如何更改其行为而感到困惑。 例如,为了保持可维护性,我正在尝试将一系列样式表保持模块化和较小,如下所示: 当您更关心调试而不是计算http请求时,在开发中就可以正常工作。 但是,一旦我转到生产环 ...

2 为什么此打印声明会搞砸?

printf("%s\\n", (char*)ent-&gt;d_name); 给了我不确定的行为。 我在输出中得到的是奇怪的符号,有时后面是随机字母。 ent是一个不同的结构。 它是在传递给pthread的函数中声明的。 并这样调用: 我尝试在调用函数的原始ent上打 ...

4 为什么jQuery提交搞砸了这个点击功能?

我一直在整个代码中使用它,没有问题: 但是在我的Submit函数中,它没有按预期工作: 预期的行为:当用户单击(任何位置),滚动,触摸或调整窗口大小时,警报消息应消失。 但是,如果用户第二次在表格中犯了一个错误,即使我没有滚动/调整大小/单击/等等,警报消息也会立即消失。 我 ...

5 IE为什么将图标悬停?

在Chrome中查看我的博客 ,然后在IE中查看它。 IE将所有图标拖到顶部,这就是我最初试图解决的上一个问题。 关于如何使其相同的任何想法? ...

2011-01-08 20:42:52 1 142   html/ css
8 为什么在布局内部添加内容会弄乱布局?

下面的布局2列布局将通过添加&lt;p&gt;Hello&lt;/p&gt;搞砸...谁能给我一个提示? 我可以看到“ p”的高度是否实际上大于200px,但实际上不是。 那么,为什么不将其放到其父内部并停止弄乱我的布局呢? 为了解决这个问题,我最终使布局列divs相对,并使用子 ...

2014-08-26 16:24:28 2 58   css
9 为什么JSON.stringify搞砸了我的日期时间对象?

我有一个带有“datetime”字段的JSON对象,如上所示。 这是完美的。 但是当我对其进行字符串化(我想将其存储在缓存中)时,我得到以下格式: 这会导致问题,因为当我想要JSON.parse时,它突然不再是日期时间格式,而且与我的其他格式不兼容。 我该怎么做才能解决这个问 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM