ruby-on-rails - Ruby - "can' t 将符号转换为整数“当尝试访问数组中的数据时

标签 ruby-on-rails ruby arrays integer symbols

这是一个数组示例:

{"C1"=>[
        {:upc=>"51857195821952", :product_id=>"1234", :name=>"name", :price=>" $15 ", :color=>"green", :size=>"L", :description=>"descr"},
        {:upc=>"352353wegs", :product_id=>"456", :name=>"name2", :price=>"$21", :color=>"black", :size=>"S", :description=>"descr"}, # ...
       ],
 #...
}

在这里,当我试图从该数组中获取数据时:

@array.each do |p|
  product = Product.new
  product.sku = p[0]
  product.name = p[1][0][:name] #can't convert Symbol into Integer
  price = p[1].select{ |pr| !pr[:price].nil? and pr[:price] != "0" }.min_by{ |i| i[:price].to_f }[:price]
  product.price = "%.2f" % (price.to_f)
  ...
end

每次我尝试从数组中获取数据时,我都会在 product.name = 行遇到错误无法将 Symbol 转换为 Integer

这种情况有什么问题?我在这个问题上花了一个下午的时间,但不幸的是我仍然无法弄清楚......

谢谢你

最佳答案

您的@array 实际上是一个散列。它的格式如下:

{ 
  'name1' => [{:upc => "..."},{:upc => "..."}],
  'name2' => [{:upc => "..."},{:upc => "..."}],
  #...
}

因为它是一个 Hash,你可以在 each(也适用于 map)方法中使用 2 个参数(一个用于键,另一个用于值) :

@array.each do |name, array|
  product = Product.new
  product.sku = name # returns "C1"
  array.each do |data|
    data[:upc]
    data[:name]
    #etc...
  end
end

关于ruby-on-rails - Ruby - "can' t 将符号转换为整数“当尝试访问数组中的数据时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15122559/

相关文章:

ruby-on-rails - FactoryGirl "create_list"未保存到数据库

ruby-on-rails - Conceal 图片网址(路线3)

javascript - Zurb Foundation 下拉菜单不起作用

ruby - 如何对数组 Ruby 中的对象进行分组

javascript - 为什么创建对象时出现意外 token 错误?

Java并行数组查找两个匹配项

Python:如何使用 `numpy.all` 和 `numpy.any` 检查一个数组是否包含在另一个数组中?

ruby-on-rails - 全天事件日历 gem

c - 我应该在 Data_Wrap_Struct 中作为类返回什么?

ruby-on-rails - 使用应用程序 Assets 创建 gem