Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.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 基于密钥与数组匹配的哈希排序_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 基于密钥与数组匹配的哈希排序

Ruby on rails 基于密钥与数组匹配的哈希排序,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我有一个rails 4应用程序。我有以下代码: @product_types = StoreProduct.where(:store_id => @store.id).pluck(:name) @product_data = @products.map do |product| product[ :data ].values.reverse! end @产品类型输出如下所示:[“颜色”、“数量”、“类型”] @产品数据输出如下所示:[[“红色”、“17”、“书本”] @产品看起

我有一个rails 4应用程序。我有以下代码:

@product_types = StoreProduct.where(:store_id => @store.id).pluck(:name)

@product_data = @products.map do |product|
    product[ :data ].values.reverse!
end
@产品类型输出如下所示:
[“颜色”、“数量”、“类型”]

@产品数据输出如下所示:
[[“红色”、“17”、“书本”]

@产品看起来像:
[#“红色”、“数量”=>“17”、“类型”=>“书籍”}>]

我希望@product_数据按照与@product_类型相同的顺序排序。因此,如果其数量、颜色、类型与@product\U types相同,则@product\U数据应按其键进行排序,排序方式与@product\U types相同,因此@product\U数据应为:17、红色、书本。

而不是:

@product_data = @products.map do |product|
  product[:data].values.reverse!
end
尝试:


这可能会有帮助。我直接处理一般的Ruby构造,为您的
@产品模拟它:

foo = ["Color", "QTY", "TypeOf"]
bar = [{'QTY' => 17, 'TypeOf' => 'Book', 'Color' => 'Red'},
       {'Color' => 'Blue', 'QTY' => 18, 'TypeOf' => 'Gem'}]
p foo.map{ |x| bar.map { |y| y[x] } }.transpose 
#=> [["Red", 17, "Book"], ["Blue", 18, "Gem"]]

foo = ["Color", "QTY", "TypeOf"]
bar = [{'QTY' => 17, 'TypeOf' => 'Book', 'Color' => 'Red'},
       {'Color' => 'Blue', 'QTY' => 18, 'TypeOf' => 'Gem'}]
p foo.map{ |x| bar.map { |y| y[x] } }.transpose 
#=> [["Red", 17, "Book"], ["Blue", 18, "Gem"]]