【发布时间】:2023-04-07 14:39:01
【问题描述】:
我有一个任务模型,它与一个目标模型以多对多的关系加入。
我有一个任务编辑表单,用户可以通过复选框将任何目标与任务相关联。当一个复选框被选中时,它应该指示任务和特定目标之间的关联;当未选中复选框时,不应该有关联。这应该在表单提交时持久化到数据库中。
<%= 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 ids) 根本不包含在 POST 操作中。因此,当我在控制器中执行 @task.update_attributes(params[:task]) 时,任务的目标集合不会更新(即任务不应再有任何与之关联的目标,因为没有选中任何复选框)。
那么我如何确保 :objective_ids 参数包含在 POST 中,即使只是作为一个空数组?
【问题讨论】:
标签: ruby-on-rails forms rest activerecord post