2012-03-23 10 views
7

मेरे पास request.env['http_host'] स्थानीयहोस्ट पर काम कर रहा था, लेकिन यह उसके त्रुटि पर एक लेआउट पेज में संदर्भित होने पर त्रुटि का कारण बनता है।रेल - लेआउट में डोमेन यूआरएल कैसे प्राप्त करें

यह अनुरोध एक दृश्य में काम करता है और सही बेस यूआरएल प्रदर्शित करता है, लेकिन जब मैं कोड को लेआउट में ले जाता हूं तो यह त्रुटि उत्पन्न करता है। नोट - मैं HTML ईमेल में छवियों के लिए पूर्ण यूआरएल बनाने के लिए इसका उपयोग कर रहा हूं।

<%= "#{request.env['HTTP_HOST']}/assets/email_header_image.png" %> 
    <%= image_tag "#{request.env['HTTP_HOST']}/assets/email_header_image.png" %> 

त्रुटि प्राप्त:

ActionView::Template::Error (undefined method `env' for nil:NilClass): 
+0

ए पी देव बनाम प्रोड के लिए वैश्विक सेटिंग्स सेट करने के लिए इसके आसपास पाने का मौका तरीका है। –

उत्तर

15

आप बंदरगाह के बिना मेजबान चाहते हैं, बस का उपयोग करें:

request.host 

संपादित करें: ओह, मैं सिर्फ देखा है कि आप उपयोग कर रहे दृश्य में कोड। मुझे नहीं पता कि यह वहां पर दिखाई दे रहा है, मैंने इसे केवल नियंत्रकों में उपयोग किया है, लेकिन एक इंस्टेंस चर सेट करके इसे दूर करना काफी आसान है।

+2

'अनुरोध' दृश्य में भी उपस्थित होना चाहिए, क्योंकि यह उदाहरण में दिया गया था। – tadman

5
  1. अपने नियंत्रक में, एक उदाहरण की मेजबानी के लिए चर बराबर सेट:
    • @host = request.host
  2. आपके विचार में, संदर्भ उदाहरण चर का उपयोग कर
    • <%= @host %>
संबंधित मुद्दे