Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.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 在嵌套哈希中使用GROUPBY和sort by_Ruby On Rails_Ruby_Sorting_Hash_Group By - Fatal编程技术网

Ruby on rails 在嵌套哈希中使用GROUPBY和sort by

Ruby on rails 在嵌套哈希中使用GROUPBY和sort by,ruby-on-rails,ruby,sorting,hash,group-by,Ruby On Rails,Ruby,Sorting,Hash,Group By,我有一个功能: tracks.group_by { |t| t[:track].track_category } 这将创建一个哈希: { #<TrackCategory id: 2, order: 0> => [{:track => #<Track promo_order: 2>, :order => 2}, {:track => #<Track promo_order: 2>,

我有一个功能:

tracks.group_by { |t| t[:track].track_category }
这将创建一个哈希:

{ 

 #<TrackCategory id: 2, order: 0> => 
  [{:track => 
     #<Track promo_order: 2>,
    :order => 2},
   {:track => 
     #<Track promo_order: 2>,
    :order => 1}],

 #<TrackCategory id: 1, order: 1> => 
  [{:track => 
     #<Track promo_order: 2>,
    :order => 2},
   {:track => 
     #<Track promo_order: 2>,
    :order => 1}]
}

您正在传递一个键值对,该键值对来自
group\u by
,并作为数组强制传递给
sort\u by
,然后尝试访问数组中的一个键,该键当然不存在

换句话说,您误解了sort_by中使用的输入。在第一个
排序依据
中,
|t |
是group|U by生成的哈希密钥对,并强制为
[k,v]
格式的数组。在您的情况下,
t
是:

[ #<TrackCategory id: 2, order: 0>,
  [{:track => 
     #<Track promo_order: 2>,
    :order => 2},
   {:track => 
     #<Track promo_order: 2>,
    :order => 1}],
 #...
]

第二行类似,但使用了
[:promo\u order]

它会给您带来什么错误?这些物品是如何摆放的?(即他们与其他事物的关系是什么?)
[ #<TrackCategory id: 2, order: 0>,
  [{:track => 
     #<Track promo_order: 2>,
    :order => 2},
   {:track => 
     #<Track promo_order: 2>,
    :order => 1}],
 #...
]
tracks.group_by { |t| t[:track].track_category }
  .sort_by { |t, _| t[:order] } # here you're sorting by TrackCategory#[:order]