default_url_optionsअपने उपयोग करने के लिए सेट करेंaction_mailer.default_url_options ।
आपकी प्रत्येक पर्यावरण फ़ाइलों में (उदाहरण development.rbके लिए production.rb, आदि) आप के default_url_optionsलिए उपयोग करने के लिए निर्दिष्ट कर सकते हैं action_mailer:
config.action_mailer.default_url_options = { host: 'lvh.me', port: '3000' }
हालाँकि, ये इनके लिए निर्धारित नहीं हैं MyApp:Application.default_url_options:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {}
यही कारण है कि आप उस त्रुटि को बाहर के किसी भी चीज़ में प्राप्त कर रहे हैं ActionMailer ।
उपयुक्त पर्यावरण फ़ाइल में default_url_optionsआपने जो भी परिभाषित किया है, उसका उपयोग करने के लिए आप अपना एप्लिकेशन सेट कर सकते हैं action_mailer( development.rb,production.rb , आदि)।
जितना हो सके DRY में चीजों को रखने के लिए, इसे अपनी config/environment.rbफ़ाइल में करें ताकि आपको केवल एक बार ऐसा करना पड़े:
# Initialize the rails application
MyApp::Application.initialize!
# Set the default host and port to be the same as Action Mailer.
MyApp::Application.default_url_options = MyApp::Application.config.action_mailer.default_url_options
अब जब आप अपने ऐप को बूट करते हैं, तो आपके पूरे एप्लिकेशन का default_url_optionsमिलान आपके साथ होगा action_mailer.default_url_options:
$ MyApp::Application.config.action_mailer.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
$ MyApp::Application.default_url_options
#=> {:host=>"lvh.me", :port=>"3000"}
मुझे इस रास्ते पर ले जाने के लिए @pduersteler को हैट टिप ।