Sending HTML Mail
Rails is great at generating HTML, so of course ActionMailer can generate HTML. It works almost like generating text messages, but with a few more details. Because some users really prefer text email messages, this demonstration will give them a choice. The form in app/views/awards/show.html.erb used to request the email, previously shown in Example 17-5, will have an extra checkbox. This extra component sets a parameter identifying whether to send ârich textâ (really HTML) email, highlighted in Example 17-6. (This code is in ch17/student011.)
Example 17-6. Adding a checkbox for choosing whether to send HTML or text email
<% form_tag email_student_award_path(@student, @award) do %><p><%= check_box_tag :use_html %>
<label for="use_html">Use rich text?</label></p>
<%= submit_tag 'Email me this award' %> <% end %>
The email
method in awards_controller
, previously shown in Example 17-2, grows a little more
complex to support the checkboxâs new :use_html
parameter, as shown in Example 17-7.
Example 17-7. Providing controller support for sending HTML-based email, when desired
def email @award = @student.awards.find(params[:id])if params[:use_html]
AwardMailer.deliver_html_certificate(@award, current_user.email)
else
AwardMailer.deliver_certificate(@award, current_user.email)end
flash[:notice] = "Email has been sent" redirect_to([@student, @award]) end
If the checkbox was checked, the user wants rich text, and so the
controller calls AwardMailer
âs ...
Get Learning Rails now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.