2013-11-26 2 views
0

사용자가 여러 친구를 가질 수 있고 그룹을 만들 수있는 앱이 있습니다. 사용자가 프리스트에게 그룹을 만들고이 그룹의 쇼 페이지에있는 경우 각 옆에 체크 박스가있는 친구 목록을 표시하는 양식이 있습니다. 사용자는 그룹에 추가 할 친구를 선택할 수 있으며, 제출시 선택한 각 친구를 현재 그룹에 가입시키는 group_member 항목이 만들어집니다.배열의 각 항목에 대해 별도의 레코드를 만드는 방법

<%= form_for @group_member, :url => {:controller => "groups", :action => 'add_member'} do |f| %> 
    <% @friends.each do |friend| %> 
    <tr> 
     <td><%= check_box_tag "friend_ids[]", friend.id %></td> 
     <td><%= friend.name + friend.id.to_s %></td> 
    </tr> 
    <% end %> 
    <div class="actions"> 
    <%= f.hidden_field :group_id, :value => params[:id] %> 
    <%= f.submit %> 
    </div> 
<% end %> 

이 컨트롤러

Parameters: {"utf8"=>"✓", "authenticity_token"=>"zg...Bg=", "friend_ids"=>["2", "3"], "group_member"=>{"group_id"=>"4"}, "commit"=>"Create Group member"} 

각 group_member에 필요한 모든 매개 변수를 제출 할 수 있지만, 나는이 작업을 작성 방법을 작동하는 데 문제가있어 보인다. "friend_ids"배열의 항목을 반복해야하고 각각에 대해 새 GroupMember 항목을 만들어야합니다.

def add_member 
    friend_ids.each do i 
    @member = GroupMember.create(:group_id => params[:group_id], :friend_id => i.value) 
    end 
end 

이는 내가 노력하고있어 방법으로 수행 할 수있는 경우는 그래서도 좋은이의 효과 (희망이 당신에게 내가 할 노력하고있어의 아이디어를 줄 것이다)에 뭔가 그것을하는 방법? 다음 단일 데이터베이스 삽입보다는 friend_id 당 1 개 데이터베이스 삽입의 모든 GroupMembers을 만들 대량으로 사용되는 해시의 배열을 구축 할 것입니다

def add_member 
    group_members_attributes = [] 
    params[:friend_ids].each do |id| 
    group_members_attributes <<({ :group_id => params[:group_member][:group_id], :friend_id => id }) 
    end 
    GroupMember.create group_members_attributes 
end 

이 :

답변

2
은 당신의 코드를 변경

.

+0

고마워 - 그 멋진 작품 –

+0

환영합니다 :) – DiegoSalazar

관련 문제