атрибуты mail_form в электронной почте ruby on rails

#ruby-on-rails #email #mail-form

Вопрос:

Я кодирую сайт для клиента, которому нужна форма, которая отправляет информацию непосредственно на ее электронную почту.

Я смог идеально настроить форму и получаю электронные письма в указанном почтовом ящике, однако мне было интересно, можно ли изменить формат атрибутов в полученной почте.

контакт.рб

 class Contact lt; MailForm::Base  attribute :Guest_One_First_Name  attribute :Guest_One_Surname  attribute :Guest_Two_First_Name  attribute :Guest_Two_Surname  attribute :Children  attribute :Restrictions  attribute :Attending  def headers  {  #this is the subject for the email generated, it can be anything you want  subject: "RSVP",  to: 'mariagenourcolas@gmail.com',  from: %("#{:Guest_One_First_Name}", "#{:Guest_One_Surname}"),  reply_to: %("#{:Guest_One_First_Name}")  #the from will display the name entered by the user followed by the email  }  end end  

контроллер

 class ContactsController lt; ApplicationController  def new  @contact = Contact.new  end   def create  @contact = Contact.new(params[:contact])  @contact.request = request  if @contact.deliver  redirect_to root_path, notice: "RSVP'd Sucessfully"  else  flash.now[:error] = 'RSVP not taken into account'  render :new  end  end end  

HTML

 lt;div class="contact-form"gt;  lt;%= simple_form_for @contact do |f| %gt;  lt;% if flash[:error].present? %gt;  lt;pgt; Please correctly complete the fields belowlt;/pgt;  lt;% end %gt;  lt;div class="form-row"gt;  lt;div class="col"gt;  lt;%= f.input :Guest_One_First_Name, label:"First Name", error: 'Name is mandatory, please specify one', class:"form-control"%gt; lt;brgt;  lt;%= f.input :Guest_One_Surname, label:"Surname", error: 'Name is mandatory, please specify one', class:"form-control"%gt; lt;brgt;  lt;/divgt;  lt;div class="col"gt;  lt;%= f.input :Guest_Two_First_Name, label:"First Name", error: 'Name is mandatory, please specify one', class:"form-control"%gt; lt;brgt;  lt;%= f.input :Guest_Two_Surname, label:"Surname", error: 'Name is mandatory, please specify one', class:"form-control"%gt; lt;brgt;  lt;/divgt;  lt;/divgt;  lt;div class="form-row"gt;  lt;div class="col"gt;  lt;%= f.input :Children, label:'Number of Children', class:"form-control"%gt; lt;brgt;  lt;/divgt;  lt;/divgt;  lt;div class="form-row"gt;  lt;div class="col"gt;  lt;%= f.collection_check_boxes :Attending, [['Brunch'] ,['Ceremony']], :first, :last %gt;  lt;/divgt;  lt;/divgt;  lt;div class="form-text"gt;  lt;%= f.label 'Dietary Restrictions' %gt;  lt;%= f.text_area(:Restrictions, rows: 3, class:"form-control")%gt; lt;brgt;  lt;/divgt;  lt;div class="send-button"gt;  lt;%= button_tag(type: 'submit', class: "suggest-btn-send") do %gt;  lt;pgt;RSVPlt;/pgt;  lt;% end %gt;  lt;/divgt;  lt;% end %gt; lt;/divgt;  

и вот что я получаю по электронной почте:

Приглашенный гость одно имя: Мари

Гость одна фамилия: Л…

Гость два имя: Мари

Гость две фамилии: С….

Дети: 4

Ограничения: отсутствуют

Участие: [«», «Поздний завтрак», «Церемония»]

Я хотел бы, чтобы присутствующие не были в виде массива, и хотел бы, чтобы информация была прочитана:

Гость первый: Мари Л…. Гость второй: Мари С… Участие: Поздний завтрак, Церемония.

Пожалуйста, помогите !

Ответ №1:

Просто запустите .join(‘, ‘) в вашем массиве, и он создаст для вас строку.

Учитывая ваш пример, вы можете сначала немного очистить массив, чтобы убедиться, что в нем нет пустых значений, иначе вы можете получить», Поздний завтрак, Церемония».

Используйте что-то похожее на .reject(amp;:пустой?) в вашем массиве, чтобы удалить пустые.