2011-02-15 17 views
25

जब मैं लेआउट कहता हूं तो मेरा मतलब सिर्फ विचार नहीं है, मैं उनको उत्पन्न करता हूं। मेरे सभी मेलर्स पर मैं एक डिफ़ॉल्ट लेआउट का उपयोग कर रहा हूं। जो मैं SomeMailer.rb फ़ाइल में परिभाषितमैं कस्टम ईमेल लेआउट का उपयोग करने के लिए तैयार कैसे कॉन्फ़िगर कर सकता हूं?

#some_mailer.rb 
class SomeMailer < ActionMailer::Base 
    layout 'sometemplate' 

वहाँ किसी तरह मैं वसीयत मेलर एट अल के लिए ऐसा कर सकते हैं है।?

उत्तर

50

मिले जवाब वसीयत Github विकि में बैठे,

पढ़ना है कि मदद करता है। How To: Create custom layouts

+10

को ओवरराइड नहीं किया, वैकल्पिक रूप से, आप 'devise :: Mailer.layout "को अपने' devise.rb के शीर्ष पर सरल " सेटअप ब्लॉक से पहले, प्रारंभकर्ता। – leppert

+0

क्या आप स्पष्टीकरण दे सकते हैं कि '# email.haml या email.erb' का क्या अर्थ है? क्या आपका मतलब '# simple.haml या simple.erb' लिखना था? –

+0

फिक्स्ड। (टिप्पणी '# simple.haml या simple.erb' होनी चाहिए - इसे प्रतिलिपि बनाई गई देवता विकी से कॉपी और चिपकाया गया है, लेकिन केवल स्ट्रिंग' "सरल" 'अनुकूलित किया गया था।) –

-2

कोशिश फिर से खोलना वसीयत :: मेलर वर्ग:

class Devise::Mailer < ActionMailer::Base 
    layout 'sometemplate' 
end 
+0

काम नहीं किया। मैंने क्लास पर कई अन्य बदलावों की भी कोशिश की, लेकिन उन्होंने डिवाइसेज टेम्पलेट, या गैर-टेम्पलेट – holden

16
# Devise::Mailer inherits from ActionMailer::Base other mail will work fine. 

## app/mailers/deviser_mailer.rb 

class DeviseMailer < Devise::Mailer 
    layout 'email' 
    default from: I18n.t("mailer.default.from") 
end 

## then in config/initializer/devise.rb 

# Configure the class responsible to send e-mails. 
config.mailer = "DeviseMailer" 

अपने रेल सर्वर को पुनः आरंभ करने के लिए सुनिश्चित रूप में आप एक प्रारंभकर्ता बदल बनाओ: ;-)

config.to_prepare do 
    Devise::Mailer.layout "simple" # simple.haml or simple.erb 
    Devise::Mailer.helper :mailer 
end 

यहाँ विकी पेज के संदर्भ है।

+2

यह रेल 4 में काम करता है –

2

वहाँ भी devise.rb में एक parent_mailer विकल्प है, मान लीजिए कि आप वसीयत के बाहर ईमेल भेज रहे हैं, डिफ़ॉल्ट रूप से इस विकल्प ActionMailer :: बेस लिए सेट किया गया है, लेकिन अगर आप एक ApplicationMailer है कि पहले से ही ActionMailer :: बेस से इनहेरिट है, तो आप इस के लिए parent_mailer बदल सकते हैं और अपने सभी लेआउट और विन्यास बॉक्स से बाहर हो सकता है।

किसी भी मामले में आपके अनुप्रयोगों में लेआउट के रेल प्रवाह को रखने के लिए इसका उपयोग करने के लिए बहुत साफ है यदि आप डिवाइज़ मेलर नियंत्रक में कुछ भी नहीं बदलना चाहते हैं।

# devise.rb 
config.parent_mailer = 'ApplicationMailer' 

# application_mailer.rb 
class ApplicationMailer < ActionMailer::Base 
    # if you need to add a helper module for example 
    add_template_helper(EmailHelper) 
    layout 'mailer' 
end 
संबंधित मुद्दे

 संबंधित मुद्दे