Rails表单和时区



在我的应用程序中,我有一个用于创建时间选择班次的表单。但是,视图中显示的时间错误了一个小时,数据库中显示的时间错误了两个小时。如果我选择start_time为10:00,stop_time为12:00,那么它在视图中显示为9:00-11:00,在控制台检查时显示为08:00-10:00。

我希望时间与系统时间相对应。输入时间。现在控制台给出正确的时间。我很困惑。

到底是什么错了,我怎么解决这个问题?

我使用rails 5和sqlite数据库。

形式:

  <div class="field">
    <%= f.label :Start %>
    <%= f.time_select :start_time, {minute_step: 30} %>
  </div>
  <br>
    <div class="field">
    <%= f.label :Stop %>
    <%= f.time_select :stop_time, {minute_step: 30} %>
  </div>

application.rb

config.time_zone = 'Stockholm'
config.active_record.default_timezone = :local
config.active_record.time_zone_aware_types = [:datetime, :time]

这可能是一个快速修复:在选择框中添加不同的名称,使用正确的时区,但让数据库将其保存在0时区。

控制器:

@start_times_correct = Model.pluck(:start_time).map{|value| [value.in_time_zone('Stockholm'), value]}

视图:

= f.select(:start_time, options_for_select(@start_times_correct))

注意:这在rails 4中工作,我希望这在rails 5中也是可用的。您还可以使用strftime来编辑值,以自定义日期的显示方式。

相关内容

  • 没有找到相关文章

最新更新