Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 Can';t排序哈希尝试了几种不同的方法_Ruby On Rails_Ruby_Sorting_Ruby Hash - Fatal编程技术网

Ruby on rails Can';t排序哈希尝试了几种不同的方法

Ruby on rails Can';t排序哈希尝试了几种不同的方法,ruby-on-rails,ruby,sorting,ruby-hash,Ruby On Rails,Ruby,Sorting,Ruby Hash,我想按位置对散列进行排序,我使用的是sort_by,但它并没有像应该的那样进行排序 hash = { "a": {"name": "a", "type": "text", "position": 1, "required": "false"}, "b": {"name": "b"

我想按位置对散列进行排序,我使用的是sort_by,但它并没有像应该的那样进行排序

hash = {
"a": {"name": "a", "type": "text", "position": 1, "required": "false"},
"b": {"name": "b", "type": "text", "position": 4, "required": "false"},
"c": {"name": "c", "type": "text", "position": 2, "required": "false"},
"d": {"name": "d", "type": "text", "position": 3, "required": "false"}
}
要对其进行排序,我使用以下命令

temp = hash.sort_by { |k,v| k[0]['position'] }

没有错误,但我在没有任何排序的情况下得到了上述散列的保存。即使我使用temp来创建新的散列,但它是相同的。在我想要的地方,它应该按位置1,2,3,4排序。它是RubyonRails的一部分,我在其中创建了这些字段。

sort\u by
由两个参数调用,
k
v
,这两个参数引用条目的键和值

由于要按位置排序,因此必须使用
v[:position]

hash.sort_by { |k, v| v[:position] }
#=> [[:a, {:name=>"a", :type=>"text", :position=>1, :required=>"false"}],
#    [:c, {:name=>"c", :type=>"text", :position=>2, :required=>"false"}],
#    [:d, {:name=>"d", :type=>"text", :position=>3, :required=>"false"}],
#    [:b, {:name=>"b", :type=>"text", :position=>4, :required=>"false"}]]

sort\u by
由两个参数调用,
k
v
,这两个参数引用条目的键和值

由于要按位置排序,因此必须使用
v[:position]

hash.sort_by { |k, v| v[:position] }
#=> [[:a, {:name=>"a", :type=>"text", :position=>1, :required=>"false"}],
#    [:c, {:name=>"c", :type=>"text", :position=>2, :required=>"false"}],
#    [:d, {:name=>"d", :type=>"text", :position=>3, :required=>"false"}],
#    [:b, {:name=>"b", :type=>"text", :position=>4, :required=>"false"}]]

有趣的是,我尝试了它,但在我的PostgresJSONB中它不起作用,所以我使用了数组符号,现在我意识到我必须首先转换为散列,然后运行上面的命令。谢谢你的帮助。爱你的城市不来梅。有趣的是,我尝试过它,但在我的postgres JSONB中它不起作用,所以我使用数组符号,现在我意识到我必须首先转换为哈希,然后运行上面的命令。谢谢你的帮助。爱你的城市不来梅。