2012-05-15 7 views
14

Ich denke, das ziemlich einfach sein sollte, aber ich bin nicht vertraut mit, wie es gemacht ...Rails: Umleitung auf der aktuellen Pfad aber andere Sub-Domain

Wie schreiben Sie eine vor-Filter, wenn die aktuellen Anforderung überprüfen würde ist für bestimmte Subdomains, und wenn ja, umleiten Sie es auf die gleiche URL, aber auf eine andere Subdomain?

Ie: blog.myapp.com/posts/1 ist in Ordnung, aber blog.myapp.com/products/123 leitet zu www.myapp.com/products/123 um.

ich etwas dachte wie ...

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 

Wie schreiben Sie, dass umleiten?

Antwort

12

ActionController::Redirecting#redirect_to ermöglicht es Ihnen, eine absolute URL passieren, so die einfachste Sache, es zu tun würde man mit etwas passieren wie:

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

Ah, ich die '.sub' Methode existiert nicht wusste, gehen würde aufgerufen werden! Vielen Dank! – Andrew

+6

Doh! Die Sub-Methode ist nur die einfache alte Ruby-Sub-Methode ... ok, also nach weiteren Experimenten funktioniert das, aber ich muss mehr von einem Regex verwenden, um sich darum zu kümmern. Das 'request.url' Objekt gibt mir genug, um den Rest herauszufinden, danke! – Andrew

+0

Hoffe nur, dass du nirgendwo sonst irgendwo in deinen URLs www ... – Qwertie

2

Eine einfache Wahl von Sub-Domain zu umleiten folgende zu Sub-Domain wäre redirect_to subdomain: 'www', :controller => 'www', :action => "index"

Dies würde auf einen Domainnamen zum Beispiel foo.apple.com dann auf www.apple.com

Verwandte Themen