1
首先,讓我解釋什麼,我想做的事:Ruby on Rails的:扁平化ARRY哈希值與組由關鍵
我有這些模型:
"Question"
name:string
belongs_to :Category
"Category"
name:string
has_many :Questions
AgendaItem
title:string
body:string
belongs_to :Category
"Meeting"
has_many :Questions
has_many :AgendaItems
的過程是這樣的: 用戶創建一個會議&從許多不同的類別(〜12個類別,每個具有10-20個問題)向它增加許多問題。
我有點工作,所以我有一個關於它的許多問題的會議。
現在,當用戶在一個名爲「Finalize」的會議上執行特定操作時,我想爲每個不同的類別創建一個AgendaItem(使用會議的問題),AgendaItem的:title應該是:分類和:它的身體應該是所有已根據該類別中選擇的問題
eg: <ul><li>Question1</li><li>Question2</li>...</ul>
我可以在一個討厭的大循環做到這一點(和檢查的問題在當前類目我是否是現在不同於前一個&創建一個新的AgendaItem),或使用兩個循環(一個創建不同的AgendaItems,然後一個將問題彈入:body)
但我敢肯定有更好的方法做到這一點,使用陣列&注入。
我當前的代碼創建哈希像這樣的數組(我認爲):
[{:id=>1, :question=>"Question1"}, {:id=>1, :question=>"Question3"},{:id=>3, :question=>Question10}]
這是做的代碼:
@meeting = Meeting.find <the_id>
array = @meeting.questions.all.map { |q| { id: q.category.id, question: q.name } }
其中:id爲:的id分類和:問題是:
:問題的我想,我想這個落得名
然後我可以循環它&從id(key)創建一個AgendaItem,並將它的主體設置爲:question(value)。
謝謝,這很好地工作。所以它將不同的值(:name)放入一個數組中,該數組是散列數組中的鍵(:category_id)的值,對吧? – user2563682
我可以問(因爲我對ruby有點新鮮)q.first和q.second究竟是什麼意思?他們不是指第一個和第二個問題嗎?在我的例子中,只有3個問題在一個類別中有2個,但在一個類別中最多可能有20個問題 – user2563682
'q.first'表示數組的第一個元素,如'q [0]','q.second'是'q [1]'。 'category_id'與'category.id'相同 –