(これは古い質問ですが、Railsは進化しているため、Rails 5.2で機能するものを共有します。)
通常は、HTMLだけでなく、電子メールの件名行を表示するときにカスタムビューヘルパーを使用することをお勧めします。次のように、ビューヘルパーがapp / helpers / application_helper.rbにある場合:
module ApplicationHelper
def mydate(time, timezone)
time.in_time_zone(timezone).strftime("%A %-d %B %Y")
end
end
ヘルパーを使用する動的な電子メールの件名行とテンプレートを作成できますが、ここで2行目と3行目を見るとわかるように、apps / mailer / user_mailer.rbで2つの異なる方法でApplicationHelperを明示的に使用するようにRailsに指示する必要があります:
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
これら2つの行も同様に機能するので、どちらか一方を選択してください。
helper :application
add_template_helper(ApplicationHelper)
FWIW、app / views / user_mailer / party_thanks.html.erbのメールテンプレートは次のようになります。
<p>
Thanks for coming on <%= mydate(@party.created_at, @party.timezone) %>
</p>
そしてapp / controller / party_controller.rbコントローラーはこのようになります
class PartyController < ApplicationController
...
def create
...
UserMailer.with(party: @party).party_thanks.deliver_later
...
end
end
私は非常に畳み込まれ、このすべての感触が与えられたことをOP(@Tomリーマン)と@gabeodessに同意する必要がhttps://guides.rubyonrails.org/action_mailer_basics.html#using-action-mailer-helpersので、おそらく、私は何かが欠けています。.. 。