Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在Rails管理中编辑时更新datetime对象_Ruby On Rails_Timezone_Rails Admin - Fatal编程技术网

Ruby on rails 在Rails管理中编辑时更新datetime对象

Ruby on rails 在Rails管理中编辑时更新datetime对象,ruby-on-rails,timezone,rails-admin,Ruby On Rails,Timezone,Rails Admin,因此,我在Heroku上托管的PostgreSQL DB中有一个餐厅表,其中有两个日期时间列:打开和关闭,表示每个餐厅的日程安排 我使用Rails后端。每次我想编辑一家餐厅,例如更改餐厅的电话号码(注意:不触摸打开或关闭),都会在保存修改后更新打开和关闭,并获得一个多小时的时间。例如,如果某一特定餐厅的开门时间为12:00,而关门时间为14:00,则该时间变为13:00和15:00 同样,在不改变的情况下,我会打开或关闭自己 它可能与我的时区有关:在application.rb中,我有: # t

因此,我在Heroku上托管的PostgreSQL DB中有一个
餐厅
表,其中有两个
日期时间
列:
打开
关闭
,表示每个餐厅的日程安排

我使用Rails后端。每次我想编辑一家餐厅,例如更改餐厅的
电话号码
(注意:不触摸
打开
关闭
),都会在保存修改后更新
打开
关闭
,并获得一个多小时的时间。例如,如果某一特定餐厅的
开门
时间为12:00,而
关门
时间为14:00,则该时间变为13:00和15:00

同样,在不改变
的情况下,我会打开
关闭自己

它可能与我的时区有关:在
application.rb
中,我有:

# timezone
config.time_zone = 'Paris'
config.active_record.default_timezone = :local

# languages

config.i18n.default_locale = :fr 
我可以做些什么来避免datetime更新

编辑:

使用的版本:

  • 轨道(5.1.6)
  • rails_admin(1.4.2)

我找到了一个githubGist来明确地将您的时区设置为RailsAdmin:

# Credits for https://gist.github.com/jackdesert/7090731
# rails_admin.rb

require 'rails_admin/config/fields/base'

module RailsAdmin
  module Config
    module Fields
      module Types
        class Datetime < RailsAdmin::Config::Fields::Base

           def value
             value_in_default_time_zone = bindings[:object].send(name)
             return nil if value_in_default_time_zone.nil?
             pacific_time_zone = ActiveSupport::TimeZone.new('Europe/Paris')
             value_in_default_time_zone.in_time_zone(pacific_time_zone)
           end
        end
      end
    end
  end
end
#学分https://gist.github.com/jackdesert/7090731
#rails_admin.rb
需要“rails\u admin/config/fields/base”
模块RailsAdmin
模块配置
模块字段
模块类型
类Datetime

这需要您在
staging.rb
production.rb
文件中配置时区,并且您必须在部署中预编译资产

您可以发布Rails和Rails管理版本吗?嗨@DimitriusLachi,我编辑了我的帖子以添加版本:)嗨@DimitriusLachi,使用已删除的解决方案,但将时区设置为
伦敦
,而不是
巴黎
,似乎可以奏效!这不是一个完美的解决方案,因为我应该能够获得正确的时区并更新我的表,而不会出现这种问题。但是现在应该很好。很好,我转载,答案,我会更新,把这个解释谢谢你的帮助?那么去巴黎的是什么
ActiveSupport::TimeZone.new('Europe/Paris')
?根据此更新。告诉我这是否有效:)在我将其添加到我的
config/initializers/rails\u admin.rb
中后,我在启动服务器时出错,你是否忘记复制一些“end”?哈哈,我在末尾缺少了一个
end
关键字。