我允许用户使用新表单和编辑表单中的复选框将联系人分组在一起:
<% current_user.contacts.all.each do |contact| %>
<% checked = @group.contacts.include?(contact) %>
<%= check_box_tag "contacts[]", contact.id, checked %>
<%= f.label contact.name %>
<% end %>
直到最近,我才能在create action中使用以下代码来创建一个组:
def create
@group = current_user.groups.new(group_params)
@contacts = Contact.find(params[:contacts])
@group.contacts << @contacts
if @group.save
......
end
为了确保在更新操作期间已经检查过的值没有添加到组,我在表单中使用了隐藏标记。
<%= hidden_field_tag "contacts[]",'' %>
<% current_user.contacts.all.each do |contact| %>
<% checked = @group.contacts.include?(contact) %>
<%= check_box_tag "contacts[]", contact.id, checked %>
<%= f.label contact.name %>
<% end %>
现在,我无法创建或更新组,因为hidden_field值也会传递。未找到有效记录:无法找到所有带有&#39;:(,3,4)的联系人(找到2个结果,但正在寻找3个)错误。我该如何解决这个问题?
答案 0 :(得分:0)
我认为您希望隐藏字段标记为nil而不是空字符串
<%= hidden_field_tag "contacts[]", nil %>
但是当你使用rails 4时,collection_check_box可能是interest