我有一個與每個記分板相關的邀請功能。每個記分牌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