(Il s'agit d'une vieille question mais Rails a évolué et je partage donc ce qui fonctionne pour moi dans Rails 5.2).
En général, vous pouvez utiliser une aide de vue personnalisée pour rendre la ligne d'objet d'un courriel ainsi que le HTML. Dans le cas où l'aide d'affichage se trouve dans le fichier app/helpers/application_helper.rb comme suit :
module ApplicationHelper
def mydate(time, timezone)
time.in_time_zone(timezone).strftime("%A %-d %B %Y")
end
end
Je peux créer une ligne d'objet et un modèle d'e-mail dynamiques qui utilisent tous deux l'aide, mais je dois indiquer à Rails d'utiliser l'ApplicationHelper de manière explicite dans le champ apps/mailer/user_mailer.rb de deux manières différentes, comme vous pouvez le voir dans les deuxième et troisième lignes ici :
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
Je dois préciser que ces deux lignes fonctionnent tout aussi bien, alors choisissez l'une ou l'autre :
helper :application
add_template_helper(ApplicationHelper)
Pour info, le modèle d'email à app/views/user_mailer/party_thanks.html.erb ressemble à ça :
<p>
Thanks for coming on <%= mydate(@party.created_at, @party.timezone) %>
</p>
Et le app/controller/party_controller.rb Le contrôleur ressemble à ceci
class PartyController < ApplicationController
...
def create
...
UserMailer.with(party: @party).party_thanks.deliver_later
...
end
end
Je dois être d'accord avec l'OP (@Tom Lehman) et @gabeodess pour dire que tout ceci semble assez alambiqué étant donné https://guides.rubyonrails.org/action_mailer_basics.html#using-action-mailer-helpers alors peut-être que je manque quelque chose...
0 votes
Similaire - amolnpujari.wordpress.com/2013/12/27/