遍历数组以创建rails对象

我无法找到有关如何遍历数组和创建对象的任何信息。

我的表单创建了一个可选择的用户列表,在选中时,将user_ids作为数组对象传递。

邀请\ new.html.rb

 
    @event_selected.id %>

我想通过将attend_event_id与attendee_id数组中的所有对象相结合来创建新的Invitations对象。

经过一些麻烦后,我得到了控制器工作的基础知识,但只是将user_id作为文本条目传递。 以下是我的邀请控制器。 不知道从哪里开始,因为我还没有找到一个好的例子。

invitations_controller.rb

  def create @invitation = Invitation.new(invite_params) if @invitation.save! flash.now[:success] = "Invited!" redirect_to root_path else flash.now[:error] = "Failure!" redirect_to root_path end end private def invite_params params.require(:invitation).permit(:attended_event_id, :attendee_id) end end 

你的意思是这样的吗?

 <%= bootstrap_form_for Invitation.new do |f| %> 
    <%= f.hidden_field :attended_event_id, :value => @event_selected.id %> <% users.each do |user| %>
  • <%= check_box_tag 'invitation[attendee_id][]', user.id %> <%= h user.name %>
  • <% end %>

<%= f.submit "Invite Selected Users" %> <% end %> def create @invitations = invite_params[:attendee_id].map do |attendee_id| Invitation.new( attended_event_id: invite_params[:attended_event_id], attendee_id: attendee_id ) end if @invitations.any?(&:invalid?) flash.now[:error] = "Failure!" redirect_to root_path else @invitations.each(&:save!) flash.now[:success] = "Invited!" redirect_to root_path end end private def invite_params params.require(:invitation).permit(:attended_event_id, {:attendee_id => []}) end

你想要达到这样的目标:

 def create params[:attendee_id].each do |user_id| Invitation.create(:attended_event_id => params[:attended_event_id], :attendee_id => user_id) end . . . end