Rails I18n 库将 YAML 文件转换为可使用 t() 函数通过点路径调用访问的数据结构。
t('one.two.three.four')
有谁知道如何使用 Ruby Hash 来做到这一点?或者只能直接通过 YAML 对象实现?
只需在路径中的一个点上分割并迭代它即可找到正确的哈希值?
path.split(".").inject(hash) { |hash, key| hash[key] }
或者,您可以通过递归迭代整个结构来构建新的哈希:
def convert_hash(hash, path = "")
hash.each_with_object({}) do |(k, v), ret|
key = path + k
if v.is_a? Hash
ret.merge! convert_hash(v, key + ".")
else
ret[key] = v
end
end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)