Ruby YAML的解析与组合
我有一个基本的问题,我似乎无法解决 我想在一个YAML文件中存储一小部分报价,然后在一个使用Ruby Middlemanapp的网站中对其进行迭代。我不确定这是我的YAML文件组合还是我试图迭代的方式,或者两者都是 YAML(quotes.yml) 雇员再培训局Ruby YAML的解析与组合,ruby,yaml,middleman,Ruby,Yaml,Middleman,我有一个基本的问题,我似乎无法解决 我想在一个YAML文件中存储一小部分报价,然后在一个使用Ruby Middlemanapp的网站中对其进行迭代。我不确定这是我的YAML文件组合还是我试图迭代的方式,或者两者都是 YAML(quotes.yml) 雇员再培训局 #f、 引述 如果我只使用If,则不管键是什么,都会一个接一个地获取所有项,但是找不到迭代它们并指定所需键或字段的方法 在Yaml中,--在Yaml流中启动一个新文档,因此在您的引号中.Yaml有三个单独的文档,您只读取第一个 我想
#f、 引述
如果我只使用If,则不管键是什么,都会一个接一个地获取所有项,但是找不到迭代它们并指定所需键或字段的方法
在Yaml中,--
在Yaml流中启动一个新文档,因此在您的引号中.Yaml
有三个单独的文档,您只读取第一个
我想你想要的是这样的:
-引用:“这是一个引用”
归属:“凯特什么的”
附加节目:“大脑树”
-引述:“废话”
署名:“唐娜·多伊”
附加节目:“埃塞克斯”
-引述:“废话”
署名:“唐娜·多伊”
附加节目:“埃塞克斯”
这是包含地图列表的单个Yaml文档。问题在于Yaml文件格式
--
是文档的标记YAML.load
和YAML.load\u文件
不想读取多个文档,只想读取第一个文档,因此需要采用不同的跟踪方式
尝试使用YAML.load\u文档(File.read('quotes.yml'))
代替:
irb(main):005:0> asdf = YAML.load_documents(File.read('quotes.yml'))
[
[0] {
"quote" => "This is a quote",
"attribution" => "Kate Something",
"extras" => "Braintree"
},
[1] {
"quote" => "Blah blah",
"attribution" => "Donna Doe",
"extras" => "Essex"
},
[2] {
"quote" => "Blah blah",
"attribution" => "Donna Doe",
"extras" => "Essex"
}
]
irb(main):005:0>asdf=YAML.load_文档(File.read('quotes.yml'))
[
[0] {
“quote”=>“这是一个quote”,
“归属”=>“凯特什么的”,
“附加”=>“大脑树”
},
[1] {
“quote”=>“诸如此类”,
“归属”=>“Donna Doe”,
“附加”=>“Essex”
},
[2] {
“quote”=>“诸如此类”,
“归属”=>“Donna Doe”,
“附加”=>“Essex”
}
]
换句话说,您将收到特定数据文件的哈希数组。每个数组元素都是一个不同的文档,解析回它的Ruby对象。这个解决方案似乎工作正常。另一个问题——如果“临时演员”有孩子怎么办?如何编写ERB来迭代上述YAML的子级?另一个问题已发布在此处:
<% data.quotes.each do |f| %>
<%= f["quote"] %> #f.quote <%= f["attribution"] %>
<% end %>
irb(main):005:0> asdf = YAML.load_documents(File.read('quotes.yml'))
[
[0] {
"quote" => "This is a quote",
"attribution" => "Kate Something",
"extras" => "Braintree"
},
[1] {
"quote" => "Blah blah",
"attribution" => "Donna Doe",
"extras" => "Essex"
},
[2] {
"quote" => "Blah blah",
"attribution" => "Donna Doe",
"extras" => "Essex"
}
]