2015-11-05 78 views
0

我有一個與每個記分板相關的邀請功能。每個記分牌has_many sent_invitations和每個邀請belongs_to記分牌。該功能完美無瑕。當前界面允許管理員分別鍵入每個電子郵件地址發送邀請。如何使用相同的表單字段向多個收件人發送電子郵件

但是,我希望通過允許管理員以相同形式輸入多個電子郵件地址來改進界面,使用逗號或突出顯示方式讓用戶知道電子郵件已完成,然後發送一封電子郵件到所有這些電子郵件地址。

我不確定如何讓我的表單接受以逗號或其他方式分隔的多個電子郵件?我不認爲Rails爲此提供了不同的幫助器。我將如何在我的控制器中處理?我將如何爲此設置正則表達式?我從未實施過接受多個電子郵件地址的表格,然後向其中的每一個發送一封電子郵件。任何關於這個主題的信息都會非常有幫助。

新窗體的代碼。

<h1>Invitation</h1> 
<div class="row"> 
    <div class= "col-md-4 col-md-offset-4"> 
     <%= form_for [@scoreboard, @invitation] do |f| %> <!-- you have to pass in the scoreboard id into the forms as well --> 
     <%= render 'shared/error_messages', object: f.object %> 

     <%= f.label :recipient_name %> 
     <%= f.text_field :recipient_name, class: "form-control", placeholder: "First and last name." %> 

     <%= f.label :recipient_email, placeholder: "Enter email" %> 
     <%= f.text_field :recipient_email, class: "form-control", placeholder: "Enter a valid email address." %> 

     <%= f.submit "Send Invitation", class: "btn btn-primary" %> 
    <% end %> 
    </div> 
</div> 

邀請控制器代碼下面給出:

def create 
     @scoreboard = Scoreboard.find(params[:scoreboard_id]) 
     @invitation = @scoreboard.sent_invitations.build(invitation_params) 
     if @invitation.save && User.exists?(email: @invitation.recipient_email) == true 
      flash[:success] = "Invitation sent successfully" 
      UserMailer.registered_invitation_email(@scoreboard, @invitation_email).deliver_now 
      redirect_to new_scoreboard_invitation_path 
     elsif 
      @invitation.save && User.exists?(email: @invitation.recipient_email) == false 
      UserMailer.non_registered_invitation_email(@scoreboard, @invitation).deliver_now 
      flash[:success] = "Invitation sent successfully" 
      redirect_to new_scoreboard_invitation_path 
     else 
      render 'new' 
     end 
    end 
end 

回答

0

我會寫的另一種方法的東西,如emails = params[:recipient_email].split(",")分裂電子郵件PARAMS。這將創建一個由逗號分隔的所有電子郵件的數組。然後做: @invitations = [] emails.each {|email| @invitations << @scoreboard.sent_invitations.build(email)}或類似的東西。

相關問題