11
我有一個Task模型,它與Objective模型以多對多關係連接。Rails窗體 - 當沒有選中複選框時,參數不包含在POST中
我有一個任務編輯窗體,用戶可以通過複選框將任何目標與任務相關聯。當複選框被選中時,它應該指示任務與特定目標之間的關聯;當複選框未被選中時,應該沒有關聯。當表單提交時,這應該保留到數據庫中。
<%= form_for @task do |f| %>
<% Objective.all.each do |objective| %>
<%= check_box_tag :objective_ids, objective.id, @task.objectives.include?(objective), :name => 'task[objective_ids][]' %>
<% end %>
<%= f.button :submit %>
<% end %>
更新任務似乎工作精絕只要一個複選框被用戶檢查,但是,當用戶不檢查任何複選框,則:objective_ids
PARAM(其爲目標ID數組)根本不包含在POST操作中。因此,當我在控制器中執行@task.update_attributes(params[:task])
時,任務的目標集合不會更新(即,任務不應該再有任何目標與其關聯,因爲沒有選中複選框)。
那麼如何確保:objective_ids
參數包含在POST中,即使只是作爲一個空數組?
謝謝。發揮魅力。 –
一個更多的解決方案在這裏:http://asciicasts.com/episodes/17-habtm-checkboxes –
@ jignesh,它在我的答案;) – cutalion