2013-03-06 71 views
0

首先,我已經做了相當多的四處觀望,雖然問題解決了答案,但我有一個問題,我認爲它有點獨特。我用下面的代碼生成的複選框列表:如何從關聯複選框列表中創建對象數組?

<% for student in Student.find(:all) %> 
    <div> 
    <%= check_box_tag "user[student_ids][]", student.id, current_user.students.include (student) %> 
    <%= student.name %> 
    </div> 
<% end %> 

單擊底部的「更新」按鈕後,我需要每過的框被放置到一個數組。然後我計劃迭代數組並對每個選中的名稱做一些工作。然而,我很難將這些名字都寫入數組中。我真的不確定這種工作應該是哪種標準網絡行爲(即發佈,獲取等),所以我不知道如何設置路線。即使我可以設置一個到控制器的路由,我如何將檢查過的學生放入一個Student對象數組中?

非常感謝您的幫助!

回答

0

我設法解決我的問題,而不是令人滿意的方式。這是我最後使用的代碼:

current_user.students.delete_all 
    if(params.has_key? :user) 
    params[:user][:student_ids].each do |i| 
     current_user.students<<(Student.find(i)) 
    end 
    end 

因爲學生我管理的數量不是永遠大於100,這個操作不是那麼糟糕,因爲它看起來。我將刪除所有已存在的關聯,然後遍歷所有傳遞的參數。然後,我使用傳遞的參數id找到student對象,並將其添加到current_user的User-Student連接表中。

我希望這可以幫助某個人!

0

你的問題的完整答案取決於各種各樣的事情,例如,你正在試圖提交數組等(這將確定是否應該使用POST,GET,PUT或DELETE)。知道對於您的代碼庫的詳細信息,如果你把下面的代碼到的form_for在控制器已經寧靜的路線之一,你應該能夠看到檢查名稱數組:

<%= current_user.students.include(student).each do |student| %> 
    <div> 
     <%= check_box_tag "student_names[]", student.name %> <%= label_tag student.name %> 
    </div> 
<% end %> 

然後,當用戶點擊提交,params哈希將顯示student_names = []。

並確保您的屬性可根據需要進行訪問。

在附註中,請查看上週的Railscasts專題片集。幾乎完全解釋你正在嘗試做什麼。不過,這是一項訂閱服務。

+0

感謝您的快速響應!在獲得該數組後,我計劃循環使用它並檢查每個學生是否已經參與了用戶和學生之間的HABTM關係。如果學生還沒有關聯,我需要它來創建關聯。如果它是相關的,我希望它什麼都不做。我有這樣的代碼(或者至少我知道如何並能夠通過Rails控制檯完成這些工作),但是我需要將所選學生的數組傳遞給某個控制器,完成這些工作並刷新風景。 – 2013-03-06 19:36:22

相關問題