(Bu eski bir soru ama Rails gelişti, bu yüzden Rails 5.2'de benim için neyin işe yaradığını paylaşıyorum.)
Genellikle, bir e-postanın konu satırını ve HTML'yi oluştururken özel bir görünüm yardımcısı kullanmak isteyebilirsiniz. Görünüm yardımcısının app / helpers / application_helper.rb dosyasında aşağıdaki gibi olması durumunda:
module ApplicationHelper
def mydate(time, timezone)
time.in_time_zone(timezone).strftime("%A %-d %B %Y")
end
end
Hem yardımcıyı kullanan dinamik bir e-posta konu satırı ve şablonu oluşturabilirim, ancak Rails'e ApplicationHelper'ı apps / mailer / user_mailer.rb'de açıkça iki farklı şekilde kullanmasını söylemeliyim , burada ikinci ve üçüncü satırlarda görebileceğiniz gibi :
class UserMailer < ApplicationMailer
include ApplicationHelper # This enables me to use mydate in the subject line
helper :application # This enables me to use mydate in the email template (party_thanks.html.erb)
def party_thanks
@party = params[:party]
mail(to: 'user@domain.com',
subject: "Thanks for coming on #{mydate(@party.created_at, @party.timezone)}")
end
end
Bu iki satırın da aynı şekilde çalıştığını belirtmeliyim, bu yüzden birini veya diğerini seçin:
helper :application
add_template_helper(ApplicationHelper)
FWIW, app / views / user_mailer / party_thanks.html.erb adresindeki e-posta şablonu şuna benzer:
<p>
Thanks for coming on <%= mydate(@party.created_at, @party.timezone) %>
</p>
Ve app / controller / party_controller.rb denetleyicisi şöyle görünür
class PartyController < ApplicationController
...
def create
...
UserMailer.with(party: @party).party_thanks.deliver_later
...
end
end
Ben OP (@Tom Lehman) ve @gabeodess ile https://guides.rubyonrails.org/action_mailer_basics.html#using-action-action-mailer-helpers göz önüne alındığında tüm bunların oldukça kıvrımlı olduğunu kabul etmem gerekiyor . .