gpt4 book ai didi

ruby-on-rails-3 - Yaml 输出填充了 !map:ActiveSupport::HashWithIndifferentAccess

转载 作者:行者123 更新时间:2023-12-05 00:37:46 28 4
gpt4 key购买 nike

我升级到 rails 3.0.9 并且有一个新的 yaml gem。不幸的是 to_yaml 输出相当大的散列的方式在某种程度上发生了变化。现在,在我之前没有得到的元素之后,我得到了很多“!map:ActiveSupport::HashWithIndifferentAccess”,就我而言,这是一个错误,因为我试图使我的 .yml 尽可能易于人类阅读.有没有办法从 yaml 输出中去掉“!map:ActiveSupport::HashWithIndifferentAccess”?它不会影响它加载到我的代码中的方式,所以我看不出它在输出中的意义。我可以直接将其删除,但我认为这里发生了一些我不知道的其他事情。

典型的哈希输入:

{"All" => 
{"A test" => {"string"=>"This is just a test",
"description" => "This is a description for a test string",
"alternatives" => [{"new" => "woot"}]}}

Yaml 输出:
All:
A test: !map:ActiveSupport::HashWithIndifferentAccess
string: This is just a test
description: This is a description for a test string
alternatives:
- !map:ActiveSupport::HashWithIndifferentAccess
new: woot

我想要的(以及我之前得到的):
All:
A test:
string: This is just a test
description: This is a description for a test string
alternatives:
- new: woot

注意:我的输出必须是 UTF-8。

最佳答案

我怀疑你的哈希来自 params在 Controller 中,类型为 ActiveSupport::HashWithIndifferentAccess .修复输出的一种方法是猴子修补其 to_yaml在将其转换为 YAML 之前将自身转换为普通哈希的方法。

# config/initializers/hash_with_indifferent_access.rb
class HashWithIndifferentAccess < Hash
def to_yaml(opts = {})
self.to_hash.to_yaml(opts)
end
end

关于ruby-on-rails-3 - Yaml 输出填充了 !map:ActiveSupport::HashWithIndifferentAccess,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577999/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com