【发布时间】:2018-07-25 06:49:29
【问题描述】:
我正在尝试在厨师模板中渲染一个 yaml 对象,它工作正常,但正如我们所知,在 yaml 空间中也很重要,因此它正在创建新属性。
collection: <%= @collection.to_hash.to_yaml %>
collection 是一个 json 对象
collection = { "name": "col1", "nested": { "nKey": 1 } }
预期结果是
collection:
name: col1
nested:
nKey: 1
得到结果
collection: ---
name: col1
nested: !ruby/hash:Mash #nested is not part of collection.
nKey: 1
其次,有什么方法可以从 to_yaml 函数中删除类型(!ruby/hash:Mash)和---?
【问题讨论】:
-
我不确定您的用例。我认为最好的办法是使用带有 to_yaml 输出的文件资源作为内容(而不是模板)。至于 Mash 注释,您必须运行嵌套的 to_hash 转换,您的数据可能来自节点对象,而不是 json。
---可以被 gsub'ed(?) -
感谢您的回复,我有厨师服务器的一个角色。然后基于该角色,我想渲染一个模板。除嵌套对象外,一切正常。这是我的整个用例。正如我在代码示例中展示的那样,它不是创建嵌套属性,而是创建直接属性。