2012-06-17 54 views
0

我有一個AR查詢,返回每月事件的哈希值,按月訂購如何操作哈希鍵數字月份轉換爲名稱

o.events.group("to_char(date,'MM')").order("to_char(date,'MM')").size() 

我使用數字月份在此查詢,因爲它是我可以找到正確順序的最佳方式,並且還需要對散列進行其他操作。

顯示結果前,我需要的數字月份轉換回的話。我添加了以下到查詢

.each_key{ |key| Date::MONTHNAMES[key] } 

結束,但我得到

TypeError: can't convert String into Integer. 

所以我試圖

.each_key{ |key| Date::MONTHNAMES[key.to_i] } 

可是個月保持在數字形式

{"01"=>4, "02"=>3..... 

我如何操作這個散列來獲得

{"January"=>4, "February"=>3..... 
+0

你穿鞋告訴我們,你實際上是試圖代替完成告訴我們您正在嘗試做它奇怪的方式。這是「xy問題」。 –

+0

謝謝大衛,我認爲問題標題和最後一句話幾乎總結了我的要求。打開任何您可能需要改進的建議。隨意編輯我的問題 –

回答

2

做一個新的哈希。如果不能,請在當前哈希中創建一個新密鑰並刪除原始密鑰。你不能簡單地改變一個鍵,因爲key是塊中的局部變量,並且改變它不會影響哈希的內容。

0

這? :

def number_to_month(number) 
    (Time.now.beginning_of_year + number.months).strftime("%B") 
end 
0

有一些方法可以產生一個新的哈希,但我認爲你可以只顯示他們的權利之前轉換字符串月份名稱在您的視圖。使用您在問題中已經寫在塊內的代碼,但將其放入您的視圖中。

相關問題