为什么我得到这个TypeError - "无法将符号转换为整数"?

ben*_*ben 3 ruby ruby-on-rails

我有一系列哈希.每个条目如下所示:

- !map:Hashie::Mash 
  name: Connor H Peters
  id: "506253404"
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建第二个数组,其中只包含id值.

["506253404"]
Run Code Online (Sandbox Code Playgroud)

这就是我的做法

second_array = first_array.map { |hash| hash[:id] }
Run Code Online (Sandbox Code Playgroud)

但是我收到了这个错误

TypeError in PagesController#home
can't convert Symbol into Integer
Run Code Online (Sandbox Code Playgroud)

如果我试试

second_array = first_array.map { |hash| hash["id"] }
Run Code Online (Sandbox Code Playgroud)

我明白了

TypeError in PagesController#home
can't convert String into Integer
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?谢谢阅读.

von*_*rad 6

你正在使用Hashie,它与ruby core中的Hash不同.看看Hashie github repo,似乎你可以访问哈希键作为方法:

first_array.map { |hash| hash.id }
Run Code Online (Sandbox Code Playgroud)

试试这个,看看是否有效 - 确保它不会返回object_id.因此,您可能需要仔细检查,first_array.map { |hash| hash.name }看看您是否真的在访问正确的数据.

然后,如果它是正确的,你可以使用proc来获取id(但更简洁一点):

first_array.map(&:id)
Run Code Online (Sandbox Code Playgroud)