2008-09-12 55 views
4

我想用ActiveScaffold創建作業記錄幾個學生一步。記錄將包含相同的數據,但student_id除外。如何用ROR中的ActiveScaffold一次創建多個記錄

我能夠覆蓋默認窗體並替換下拉框來選擇學生姓名與多選框 - 這正是我想要的。然而,這種改變只是表面上的,因爲底層代碼只抓取該框中的第一個選擇的名稱,並創建單個記錄。

有人可以建議一種很好的方式來完成這個過程,而不需要我解密和重寫太多的底層ActiveScaffold代碼嗎?


更新:我還沒有找到這個問題的好答案。

回答

0

如果您的assingnments有has_many :studentshas_and_belongs_to_many :students,那麼您可以將多選框的ID更改爲assignment_student_ids [],它應該可以工作。

+0

我的作業記錄是每個學生一個記錄,因爲有諸如「筆記」這樣的字段是針對學生的。 如果我正確理解您的答案,這將允許您在表單上選擇多個名稱,但ajax請求將保持不變。 – Brent 2008-09-13 17:25:49

0

我被稱爲BatchCreate,這是一個ActiveScaffold擴展,看起來可能會有所斬獲。

1

我想你已經定義了你的多選框加入:multiple => true對於select_tag的html參數。然後,在控制器,你需要訪問選定的名稱列表中,你可以做什麼這樣的:

params[:students].collect{|student| insert_student(student, params[:assignment_id]) } 

隨着收集應用到陣列或枚舉可以遍歷數組中的每個項目,然後做每個學生需要的東西(例如,調用插入學生的函數)。 Collect會返回一個數組,其中包含執行代碼的結果。

相關問題