2014-10-08 114 views
0

我允許用戶組聯繫人一起使用複選框,在新的編輯形式:保存複選框值數據庫

<% current_user.contacts.all.each do |contact| %> 
    <% checked = @group.contacts.include?(contact) %> 
    <%= check_box_tag "contacts[]", contact.id, checked %> 
    <%= f.label contact.name %> 
<% end %> 

直到最近,我才得以在使用下面的代碼創建操作創建一個組:

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值也會傳遞。未找到活動記錄:找不到所有具有'id'的聯繫人:(,3,4)(找到2個結果,但正在查找3)錯誤。我該如何解決這個問題?

+1

你想要的'hidden_​​field_tag'在你的循環之上。你正在運行哪個版本的導軌? – 2014-10-08 13:21:21

+0

以及如果您希望現在有多個ID,您可以執行'Contact.find_all_by_id(params [:contacts])' – Nithin 2014-10-08 14:08:31

+0

@japed抱歉,我犯了一個錯誤。 hidden_​​field已經在循環之上。編輯代碼以反映這一點。並且,我正在使用Rails 4.1 – user3224820 2014-10-08 14:14:05

回答

0

我想你想隱藏字段標籤是零,而不是一個空字符串

<%= hidden_field_tag "contacts[]", nil %> 

但是當你正在使用的軌道4,然後collection_check_boxes可能是interest