Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails NoMethodError:未定义的方法'each#u value';解析YAML数组时_Ruby On Rails_Ruby_Yaml - Fatal编程技术网

Ruby on rails NoMethodError:未定义的方法'each#u value';解析YAML数组时

Ruby on rails NoMethodError:未定义的方法'each#u value';解析YAML数组时,ruby-on-rails,ruby,yaml,Ruby On Rails,Ruby,Yaml,我有一个简单的YAML数组,其值如下 %YAML 1.1 --- - - 'd7744c3878' - '80705686' - - 'c349b086b1' - '80705686' - - '516e25d139' - '95203563' 我尝试使用以下代码对它们进行迭代,并将它们添加到数据库中 YAML.load_file("db/tokens.yml").each_value do |yml_token| token = Token.find_or

我有一个简单的YAML数组,其值如下

%YAML 1.1
---

-
  - 'd7744c3878'
  - '80705686'
-
  - 'c349b086b1'
  - '80705686'
-
  - '516e25d139'
  - '95203563'
我尝试使用以下代码对它们进行迭代,并将它们添加到数据库中

YAML.load_file("db/tokens.yml").each_value do |yml_token|

    token = Token.find_or_create_by_token_origin(
           token_origin: yml_token[0],
           token_value: yml_token[1]) 

end
但是我得到了一个
NoMethodError:undefined方法,每个_值#
尝试运行代码时出错

你知道这是什么原因吗

更新:

使用下面建议的
Psych.load
,我还得到了一个
SyntaxError:db/gallery\u令牌。yml:1:未知类型的%string
%YAML 1.1
错误

require "psych"
Psych.load("db/tokens.yml").each do |yml_token|

    token = Token.find_or_create_by_token_origin(
           token_origin: yml_token[0],
           token_value: yml_token[1]) 

end

顶部的声明“%YAML 1.1”可能会导致问题

无错误:

require "yaml"
YAML.load("---\n\n-\n  - 'd7744c3878'\n  - '80705686'").each
=> #<Enumerator: [["d7744c3878", "80705686"]]:each>

直接使用Psych的可能替代方法是切换到更高版本的Ruby或从文件中删除
%YAML 1.1
头。

如果检查
YAML.load\u文件(“db/tokens.yml”)
,会得到什么?我得到整个数组YAML数组。
数组的每个值都不存在,这用于
Hash
es.@oldergod我应该用什么来代替呢?如果要解析硬盘上的文件,需要调用
Psych.load\u file
。所以,我应该用什么来代替呢?@Martin:看起来有几个选项--请看我的编辑。使用psych时,我出现了这个错误
SyntaxError:db/tokens.yml:1:未知类型的%string%YAML 1.1^
@Martin:您使用的是什么版本的psych和Ruby?让我们看看
YAML.load("%YAML 1.1\n---\n\n-\n  - 'd7744c3878'\n  - '80705686'").each
NoMethodError: undefined method `each' for "%YAML 1.1 ---\n- - 'd7744c3878' - '80705686'":String
        from (irb):4
        from /Users/modify/.rvm/rubies/ruby-1.9.2-p180/bin/irb:17:in `<main>'
require "psych"
Psych.load("%YAML 1.1\n---\n\n-\n  - 'd7744c3878'\n  - '80705686'").each
=> #<Enumerator: [["d7744c3878", "80705686"]]:each>