사용자가 여러 친구를 가질 수 있고 그룹을 만들 수있는 앱이 있습니다. 사용자가 프리스트에게 그룹을 만들고이 그룹의 쇼 페이지에있는 경우 각 옆에 체크 박스가있는 친구 목록을 표시하는 양식이 있습니다. 사용자는 그룹에 추가 할 친구를 선택할 수 있으며, 제출시 선택한 각 친구를 현재 그룹에 가입시키는 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
이 :
고마워 - 그 멋진 작품 –
환영합니다 :) – DiegoSalazar