无法对哈希进行排序尝试了几种不同的方法

Can't sort hash tried few different ways

我想按位置对散列进行排序,我正在使用 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 排序。它是我在 Rails 上创建这些字段的 Ruby 的一部分。

sort_by 使用两个参数调用,kv 引用条目的键和值。

既然要按位置排序,就得用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"}]]