У меня есть модель задачи, которая объединена в отношение "многие ко многим" с объектной моделью.
У меня есть форма редактирования задачи, в которой пользователь может связать любой объект с заданием с помощью флажков. Когда флажок установлен, он должен указывать на связь между Задачей и конкретной Целью; когда флажок не установлен, связи не должно быть. Это должно сохраняться в базе данных при отправке формы.
<%= 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
(который представляет собой массив идентификаторов Objective) не включен в действие POST вообще. Из-за этого, когда я делаю @task.update_attributes(params[:task])
в контроллере, коллекция задач Целей не обновляется (т.е. У задачи больше не должно быть никаких связанных с ней Целей, поскольку флажки не были отмечены).
Итак, как я могу гарантировать, что параметр :objective_ids
включен в POST, даже если только в качестве пустого массива?