2016-05-29 35 views
1

我做了對我顯示與用戶和他們代言的數圖表的statstics頁,它看起來像這樣在顯示現在要做的是按照背書的數量對顯示的結果進行排序,但不知道如何正確地做到這一點。紅寶石軌道上。 <a href="https://i.stack.imgur.com/aSvTv.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/aSvTv.png" alt="enter image description here"></a></p> <p>我想要什麼:排序哈希通過代言數圖表

我顯示@data建這樣的:

@data = @users.map { |user| 
      amount = user.inbound_endorsements.joins(:endorsed_user).group(:name).count 
       if !amount.empty? 
       {name: user.name, data: amount} 
       end 
      } 

而且在我看來,

<%= @data.compact %> 

給出了這樣的哈希:

[{:name=>"Jess Corwin", :data=>{"Jess Corwin"=>1}}, {:name=>"Rhiannon Nicolas", :data=>{"Rhiannon Nicolas"=>1}}, {:name=>"Assunta Pfeffer", :data=>{"Assunta Pfeffer"=>2}}, {:name=>"Rafaela Farrell", :data=>{"Rafaela Farrell"=>1}}, {:name=>"Maurine Hettinger", :data=>{"Maurine Hettinger"=>1}}]

而且我想按數字排序。

我已經試過diffeerent方法,如:

<%= @data.compact.sort! %> 
<%= @data.compact.sort_by{ |name,data| data } %> 
<%= @data.compact.sort_by{ |d| d[:data] } %> 

等similiar方法,大多導致錯誤:

comparison of Hash with Hash failed

我如何能做到這一點的任何幫助將不勝感激!

回答

1
arr.sort_by { |h| h[:data].values } 
=> [{:name=>"Jess Corwin", :data=>{"Jess Corwin"=>1}}, 
    {:name=>"Rhiannon Nicolas", :data=>{"Rhiannon Nicolas"=>1}},   
    {:name=>"Rafaela Farrell", :data=>{"Rafaela Farrell"=>1}}, 
    {:name=>"Maurine Hettinger", :data=>{"Maurine Hettinger"=>1}}, 
    {:name=>"Assunta Pfeffer", :data=>{"Assunta Pfeffer"=>2}}] 
+0

太棒了!現在只有當你能告訴我如何扭轉順序,使其降序:) – Helban

+1

@Helban,'arr.sort_by {| h | h [:data] .values} .reverse' – Ilya

+0

太棒了!謝謝!這就是我正在尋找的。快速而優秀的答案,謝謝! – Helban

相關問題

 相關問題