Ruby YAML的解析与组合

Ruby YAML的解析与组合,ruby,yaml,middleman,Ruby,Yaml,Middleman,我有一个基本的问题,我似乎无法解决 我想在一个YAML文件中存储一小部分报价,然后在一个使用Ruby Middlemanapp的网站中对其进行迭代。我不确定这是我的YAML文件组合还是我试图迭代的方式,或者两者都是 YAML(quotes.yml) 雇员再培训局 #f、 引述 如果我只使用If,则不管键是什么,都会一个接一个地获取所有项,但是找不到迭代它们并指定所需键或字段的方法 在Yaml中,--在Yaml流中启动一个新文档,因此在您的引号中.Yaml有三个单独的文档,您只读取第一个 我想

我有一个基本的问题,我似乎无法解决

我想在一个YAML文件中存储一小部分报价,然后在一个使用Ruby Middlemanapp的网站中对其进行迭代。我不确定这是我的YAML文件组合还是我试图迭代的方式,或者两者都是

YAML(quotes.yml)

雇员再培训局


#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" } ]