Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.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 如何防止yaml中的字符串转换为时间_Ruby On Rails_Ruby_Yaml - Fatal编程技术网

Ruby on rails 如何防止yaml中的字符串转换为时间

Ruby on rails 如何防止yaml中的字符串转换为时间,ruby-on-rails,ruby,yaml,Ruby On Rails,Ruby,Yaml,我有一个yaml文件,其中包含一些时间: hours: - 00:00:00 - 00:30:00 - 01:00:00 但一旦我读到它们,它们就会转换为时间(以秒为单位),但我希望它们作为字符串保留一段时间,以便我可以进行转换。我是这样读的: def daily_hours DefaultsConfig.hours.collect {|hour| logger.info { hour.to_s } } end 它输出: 0 1

我有一个yaml文件,其中包含一些时间:

  hours:
    - 00:00:00
    - 00:30:00
    - 01:00:00
但一旦我读到它们,它们就会转换为时间(以秒为单位),但我希望它们作为字符串保留一段时间,以便我可以进行转换。我是这样读的:

  def daily_hours
    DefaultsConfig.hours.collect {|hour|
      logger.info { hour.to_s }
    }
  end
它输出:

0 1800 3600

但我希望字符串保持不变,以便我可以将其转换为时间,例如:

12:00am 12:30am 1:00am

为什么它们会自动转换,我如何才能阻止它

以下是DefaultConfig类:

class DefaultsConfig  
  def self.load
    config_file = File.join(Rails.root, "config", "defaults.yml")

    if File.exists?(config_file)
      config = ERB.new(File.read(config_file)).result
      config = YAML.load(config)[Rails.env.to_sym]
      config.keys.each do |key|
        cattr_accessor key
        send("#{key}=", config[key])
      end
    end
  end
end
DefaultsConfig.load

如果将该值括在单引号内,YAML解析器将把该值视为字符串

hours:
    - '00:00:00'
    - '00:30:00'
    - '01:00:00'
现在,当您访问该值时,您将获得一个字符串,而不是时间

DefaultsConfig.hours[0] # returns "00:00:00"

不带引号或标记的标量是的主题。可以使用引号或显式标记:

hours:
       - '00:00:01'
       - "00:00:02"
       - !!str "00:00:03"

如何设置
DefaultConfigs
?这只是yaml文件中读取的类。它让我可以访问“小时”,这是你在帖子的第一个灰色框中看到的。我会将代码添加到帖子中。谢谢,这很有效!奇怪的是,它在没有单引号的情况下转换它!实际上,您是通过将值括在引号中来将其转换为字符串。有关更多详细信息,请参阅本文