[英]How to convert symbols to strings (i.e. strip leading :) ruby to_yaml
我正在尝试从我的YAML输出中删除前导:
。 这是代码,下面是我做的:
模型/ attribution_channel.rb
DEFAULT_BONUS_CONFIG = {
sign_up: {
currency: 'ngn',
type: 'flat',
amount: 1000
},
visit: {
currency: 'ngn',
type: 'flat',
amount: 5
}
}
视图/ form.slim.html
AttributionChannel::DEFAULT_BONUS_CONFIG.to_yaml
输出:
要从输出中删除YAML分隔符---和Leading:,请执行以下操作:
AttributionChannel::DEFAULT_BONUS_CONFIG.to_yaml.gsub("---\n", '').sub(":", '')
..但该.sub(":", '')
部分仅除去:
第一领先的:
。
如何从YAML输出中删除前导:
? 任何帮助表示赞赏吗? 这是我想要的以下内容:
sign_up:
currency: ngn
type: flat
amount: 1000
visit:
currency: ngn
type: flat
amount: 5
您需要将键作为字符串跳过:
生成
require 'active_support/core_ext/hash/keys'
require 'yaml'
DEFAULT_BONUS_CONFIG.deep_stringify_keys.to_yaml.gsub("---\n", '')
=> "sign_up:\n currency: ngn\n type: flat\n amount: 1000\nvisit:\n currency: ngn\n type: flat\n amount: 5\n"
您可以在生成YAML之前将哈希键转换为字符串。 下面的代码经过哈希处理,将每个键递归地转换为哈希,如果是哈希,则对每个值进行字符串化处理(请注意,它没有为哈希中的循环依赖做好准备)。
def stringify(hash)
hash.map{|k, v| [k.to_s, v.is_a?(Hash) ? stringify(v) : v] }.to_h
end
puts stringify(DEFAULT_BONUS_CONFIG).to_yaml
---
sign_up:
currency: ngn
type: flat
amount: 1000
visit:
currency: ngn
type: flat
amount: 5
编辑:关于---
一开始,请参阅此答案 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.