(यह एक पुराना सवाल है, लेकिन रेल विकसित हो गई है इसलिए मैं साझा करता हूं कि मेरे लिए रेल 5.2 में क्या काम करता है।)
आमतौर पर आप किसी ईमेल के विषय पंक्ति के साथ-साथ HTML का भी प्रतिपादन करने के लिए कस्टम व्यू हेल्पर का उपयोग करना चाह सकते हैं। इस मामले में जहां एप्लिकेशन / हेल्पर्स / एप्लिकेशन_हेलपर.rb में व्यू हेल्पर इस प्रकार है:
module ApplicationHelper
def mydate(time, timezone)
time.in_time_zone(timezone).strftime("%A %-d %B %Y")
end
end
मैं एक डायनामिक ईमेल सब्जेक्ट लाइन और टेम्प्लेट बना सकता हूं, जो दोनों हेल्पर का उपयोग करते हैं, लेकिन मुझे रेल्स को एप्लिकेशन / मेलर / user_mailer.rb में दो अलग-अलग तरीकों से स्पष्ट रूप से ApplicationHelper का उपयोग करने की आवश्यकता है, जैसा कि आप दूसरी और तीसरी पंक्ति में देख सकते हैं। :
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
मुझे यह उल्लेख करना चाहिए कि ये दो लाइनें काम करती हैं और साथ ही एक या दूसरे का चयन करती हैं:
helper :application
add_template_helper(ApplicationHelper)
FWIW, ऐप / विचार / user_mailer / party_thanks.html.erb पर ईमेल टेम्पलेट इस तरह दिखता है:
<p>
Thanks for coming on <%= mydate(@party.created_at, @party.timezone) %>
</p>
और ऐप / कंट्रोलर / पार्टी_कंट्रोलर.आरबी कंट्रोलर ऐसा दिखता है
class PartyController < ApplicationController
...
def create
...
UserMailer.with(party: @party).party_thanks.deliver_later
...
end
end
मुझे ओपी (@Tom Lehman) और @gabeodess से सहमत होना है कि यह सब काफी जटिल लगता है कि दिए गए https://guides.rubyonrails.org/action_mailer_basics.html#using-action-mailer-helpers इसलिए शायद मुझे कुछ याद आ रहा है .. ।