我将 YAML.load_file
应用于我的示例文件:
---
languages:
- name: "English"
iso_639: "en"
native_name: "English"
region:
- ''
- UK
- US
- name: "Klingon"
iso_639: "tlh"
native_name: "tlhIngan Hol"
region:
- notearth
我想遍历这些语言和区域数组。这不起作用:
records.each do |record|
record.region.each do |region|
self.create!
end
end
record.region
给我一个未知的区域方法错误。我如何遍历语言及其区域?或者,如何访问区域数组?
最佳答案
您的代码中有两个错误:
加载 YAML 文件后得到的对象不是数组,它是一个散列,假设文件名为
foo.yml
:YAML.load_file('foo.yml') # => {"languages"=>[{"name"=>"English", "iso_639"=>"en", ...
因此您必须像下面这样修改您的代码以使其工作:
records['languages'].each do |record| # ...
region
不是 hashrecord
的方法,它是一个键,你必须使用record['region ']
.
您必须使用的正确代码是:
records['languages'].each do |record|
record['region'].each do |region|
# My guess is you are going to use `region` inside this block
self.create!
end
end
关于ruby - 用 ruby 迭代一个 yaml 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22350738/