2012-05-15 11 views
14

मुझे लगता है कि यह काफी आसान होना चाहिए, लेकिन मैं यह कैसे हुआ से परिचित नहीं हूँ के लिएरेल: वर्तमान पथ लेकिन अलग उप डोमेन

अनुप्रेषित ... कैसे आपको लगता है कि वर्तमान अनुरोध करता है, तो जाँच करेगा फिल्टर से पहले एक लिख सकता हूँ कुछ सबडोमेन के लिए है, और यदि ऐसा है तो इसे उसी यूआरएल पर रीडायरेक्ट करें लेकिन एक अलग सबडोमेन पर?

आईई: blog.myapp.com/posts/1 ठीक है लेकिन blog.myapp.com/products/123www.myapp.com/products/123 पर रीडायरेक्ट करता है।

मैं की तरह कुछ सोच रहा था ...

class ApplicationController < ActionController::Base 
    before_filter :ensure_domain 

    protected 
    def ensure_domain 
    if request.subdomain == 'blog' && controller_name != 'posts' 
     redirect_to # the same url but at the 'www' subdomain... 
    end 
    end 
end 

आपको लगता है कि अनुप्रेषित कैसे लिख सकता हूँ?

उत्तर

12

ActionController::Redirecting#redirect_to आप एक निरपेक्ष URL पारित करने के लिए अनुमति देता है, तो हो सकता है ऐसा करने के लिए सबसे आसान काम की तरह कुछ के साथ एक पारित करने के लिए:

redirect_to request.url.sub('blog', 'www') 
+0

आह, मैं '.sub' विधि अस्तित्व में नहीं पता था! धन्यवाद! – Andrew

+6

दोह! उप विधि सिर्फ सादा पुरानी रूबी उप विधि है ... ठीक है तो आगे के प्रयोग के बाद यह काम करता है लेकिन मुझे इसकी देखभाल करने के लिए अधिक रेगेक्स का उपयोग करना होगा। 'Request.url' ऑब्जेक्ट मुझे बाकी को समझने के लिए पर्याप्त देता है, धन्यवाद! – Andrew

+0

बस उम्मीद है कि आपके यूआरएल में कहीं और www नहीं है ... – Qwertie

2

एक सरल विकल्प के उप के लिए निम्न होगा उप डोमेन से पुनर्निर्देशित करने के लिए redirect_to subdomain: 'www', :controller => 'www', :action => "index"

यह उदाहरण foo.apple.com लिए एक डोमेन नाम पर कहा जा सकता है तो www.apple.com होना तय था

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