2011-10-18 12 views
9

मेरे मेलर टेम्पलेट में दृश्य सहायक मुझे स्टाइलशीट और छवियों के सापेक्ष URL देते हैं। बेशक, अगर मैं जीमेल में ईमेल देख रहा हूं, तो यह काम नहीं करेगा, उदाहरण के लिए।संपत्ति पाइपलाइन के साथ मेलर में स्टाइलशीट के लिए पूर्ण पथ कैसे है?

<link href="/assets/application-c90478153616a4165babd8cc6f4a28de.css" media="screen" rel="stylesheet" type="text/css" /> 
... 
<a href="http://mysite.com"><img alt="Logo" src="/assets/logo-d3adbf8d0a7f7b6473e2130838635fed.png" /></a> 

मैं कैसे रेल मुझे पूर्ण लिंक के बजाय देने के लिए मिलता है:

apps/views/layouts/mailer.html.erb

<%= stylesheet_link_tag "application" %> 
... 
<%= link_to(image_tag("logo.png"), "http://mysite.com") %> 

में के रूप में रेंडर? मैं रेल 3.1 पर हूं, संपत्ति पाइपलाइन प्रभावी है।

उत्तर

13

`config.action_controller.asset_host एक्शनकंट्रोलर से उत्पन्न दृश्यों में होस्ट उपसर्ग को संभालता है।

एक ई-मेल में उत्पन्न कुछ भी के लिए आप ActionMailer कॉन्फ़िगरेशन विकल्प, और अधिक विशेष के लिए देख रहे:

  • ActionMailer::Base.asset_host संभाल लेंगे अपने image_tags और
  • ActionMailer::Base.default_url_options[:host] अपने link_to टैग के बाद दिखेगा।

जैसे:

ActionMailer::Base.asset_host     = "http://blah.com" 
ActionMailer::Base.default_url_options[:host] = "blah.com" 

ध्यान दें कि आप डिफ़ॉल्ट यूआरएल मेजबान के लिए http उपसर्ग निर्दिष्ट करने की आवश्यकता नहीं है, आप संपत्ति मेजबान के लिए होगा।

मैंने एप्लिकेशन प्रारंभकर्ता के बाद इन पर्यावरण.आरबी के अंदर इन्हें निर्दिष्ट किया है। मैं प्रत्येक वातावरण डोमेन के लिए एक अनुप्रयोग विन्यास चर सेट करने की सिफारिश करेंगे।

+0

यह सही है, आपके पास मेलर के लिए संपत्ति होस्ट में "http: //" होना है। –

3

यह एक हैक का थोड़ा सा हो सकता है, लेकिन अगर आप एक संपत्ति होस्ट निर्दिष्ट करते हैं, तो सभी helpers will take it into account लिंक प्रतिपादन करते समय। इसलिए यदि आप अपने config में

config.action_controller.asset_host = "http://mysite.com" 

निर्धारित करते हैं, stylesheet_link_tag होस्ट नाम शामिल होंगे।

+0

प्रतिक्रिया के लिए धन्यवाद। दुर्भाग्य से, यह मेलर्स के लिए प्रस्तुत टेम्पलेट्स के लिए काम नहीं करता है। कोई अन्य विचार? – rocketscientist

+0

मेरे लिए भी काम नहीं करता है। :(क्या यह एक रेल बग है? –

+0

आपके पास एक टाइपो है, 'config.action_mailer.asset_host' होना चाहिए – Dex

11

रेल 3.2 और ActionMailer उपयोग के लिए:

config.action_mailer.asset_host = "http://www.example.com" 
+0

धन्यवाद सही जवाब के लिए। – barelyknown

0

इस सूत्र rocketscientist में और जो अन्य विचारों के बारे में पूछा:

http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/stylesheet_link_tag

पूर्ण सीएसएस उत्पन्न कर सकते हैं इस प्रकार है (यदि आप ऐसा नहीं करते संपत्ति होस्टिंग के बारे में परवाह)। हालांकि डेविड रैडक्लिफ द्वारा जवाब देना चाहिए।

 
stylesheet_link_tag "http://www.railsapplication.com/style.css" # => 
    <link href="http://www.railsapplication.com/style.css" media="screen" rel="stylesheet" type="text/css" /> 
संबंधित मुद्दे