2013-01-11 29 views
5

में निर्मित कस्टम यूआरएल सहायक व्यवहार करें, मुझे मेलर को ईमेल पुष्टिकरण URL जोड़ने के लिए "रेल मार्ग" का पता लगाने में कठिनाई हो रही है।रेल: _path और _url helpers

मैं इसे पूरी तरह से करने की कोशिश नहीं कर रहा हूं क्योंकि, पाठ ईमेल के साथ यह मुश्किल है क्योंकि वे PUT अनुरोध नहीं कर सकते हैं।

इसलिए यहाँ मेरी routes.rb है: get 'confirm/:id' => 'Confirmations#confirm'

और मेरे मेलर में मैं email_confirm_url(@user.email_token) जहाँ मैं यूआरएल घटित करना चाहते हैं करना चाहते हैं।

#app/helpers/confirmations_helper.rb 
module ConfirmationsHelper 
    def email_confirm_url(token) 
    "/confirm/#{token}" 
    end 
end 

यह सब काम करता है, एक तरह से, जब मैं email_confirm_url(@user.email_token) फोन ...

को छोड़कर मैं सचमुच मिलती है:: "/confirm/abcdefg…"

जब कि मैं क्या चाहता हूँ

मैं एक सहायक बनाया: http://myhostname/confirm/abcdefg…

या विकास में: http://localhost:3000/confirm/abcdefg…

मैं अपने यूआरएल सहायक को रेल में <resource>_path और <resource>_url सहायक में निर्मित कैसे कर सकता हूं? हालांकि वास्तव में मुझे लगता है कि मैं वास्तव में केवल _url की आवश्यकता है।

#edit: मैं अपने पर्यावरण config में इस है:

#config/environments/development.rb 
... 
config.action_mailer.default_url_options = { :host => "localhost:3000" } 

उत्तर

0

अनुरोध वस्तु तक पहुँचने के लिए आप अपने मेलर के लिए नियंत्रक में इस समारोह को लागू करने और यह एक साथ टेम्पलेट को पारित करना चाहिए चर।

एप्लिकेशन/मेलर्स/emailer.rb

@tracking_url = "http://#{request.host}:#{request.port}/confirm/#{token}" 

एप्लिकेशन/देखें/emailer/template_name.html.erb

<%= link_to 'name', @tracking_url %> 
+0

'एक्शन व्यू :: टेम्पलेट :: त्रुटि: शून्य के लिए अपरिभाषित विधि 'होस्ट': नील क्लास 'मुझे लगता है कि मुझे मेलर्स में' होस्ट 'या' host_with_port' तक पहुंच न होने के बारे में कुछ याद है?!? इस के आसपास किसी भी तरह से? उपरोक्त टिप्पणी के आधार पर – Meltemi

+0

अद्यतन उत्तर, अगर यह काम करता है तो मुझे बताएं। – zarazan

0

पहले से मौजूद यूआरएल प्लस संयोजन का उपयोग कर के बारे में क्या? अर्थात। आप root_path और root_url का उपयोग कर सकते हैं, तो आप समेकित हो जाते हैं और व्यवहार रेल के समान ही है!

उदाहरण के लिए आप यह कर सकते हैं:

def mystrangemethod_url(option1, option2) 
    "#{ root_url }/#{ option1 }/#{ option2 }" 
end 

और आप कर रहे हैं। आसान और केवल आवश्यकता सेट रूट रूट में अपना रूट पथ सेट करें। आरबी। इसके अलावा आपने विकास.आरबी में सेट किए गए विकल्प के साथ, यह मेलर्स में भी काम करेगा।

+0

मुझे लगता है कि क्यू एक दृश्य से 'mystrangemethod_url' को पारदर्शी रूप से एक्सेस करने के तरीके की तरह है। – mlt