作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我有如下 YAML 文件:
position_details:
star_performer:
title: "Star Performer"
description: ""
idiot of year:
title: "idiot of year"
description: "The Idiot of year Award recognizes excellence in anti - social collaboration on social platform ."
我需要收集 title
其关联的 description
不存在,例如从上面的文件中我需要收集标题 “Star Performer”
。我怎样才能做到这一点?
最佳答案
如果你的意思是通过过滤器你想收集那些标题
data = YAML.load(File.read(File.expand_path('path/to/your.yml', __FILE__)))
positions_with_no_description = data["position_details"].each_value.collect do |pos|
pos["title"] if pos["description"].empty?
end
根据 toro2k 的评论,如果您使用的是 Rails,您可以用空白代替吗?为空?涵盖不存在描述键的情况。
此外,这将为您提供一个包含 nil 值的数组 positions_with_no_description
。要消除它们,只需调用 compact!
上述的简明版本可以是:
filtered = data["position details"]
.each_value
.collect { |p| p["title"] if p["description"].blank? }
.compact!
我已经在你的测试 yml 文件上测试过它并且它有效。错误是我错误地使用了 “position_details”
,而您将“position details”作为您的关键字 - 没有下划线。
我刚刚测试过的来自 IRB 的确切代码:
> data = YAML.load(File.read(File.expand_path('../test.yml', __FILE__))
> data["position details"].each_value.collect { |x| x["title"] if x["description"].empty? }.compact!
> # => ["Star Performer"]
关于ruby-on-rails - 如何从 YAML 文件中收集条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21623115/
我是一名优秀的程序员,十分优秀!