2012-05-15 18 views
14

credo che questo dovrebbe essere abbastanza facile, ma io non sono a conoscenza di come si fa ...Rails: redirect al percorso attuale, ma diverso sottodominio

Come si scrive un prima filtro che avrebbe controllare se la richiesta corrente è per determinati sottodomini, e in tal caso lo reindirizza allo stesso url ma su un sottodominio diverso?

Vale a dire: blog.myapp.com/posts/1 va bene ma blog.myapp.com/products/123 reindirizza a www.myapp.com/products/123.

Stavo pensando qualcosa di simile ...

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 

Come si scrive che reindirizzano?

risposta

12

ActionController::Redirecting#redirect_to permette di passare un URL assoluto, per cui la cosa più semplice da fare sarebbe quella di passare uno con qualcosa di simile:

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

Ah, non sapevo che il metodo '.sub' esistito! Grazie! – Andrew

+6

Doh! Il metodo sub è semplicemente il semplice metodo sub ruby ​​vecchio ... ok così dopo ulteriori sperimentazioni funziona, ma devo usare più di una regex per prendermene cura. L'oggetto 'request.url' mi dà abbastanza per capire il resto, grazie! – Andrew

+0

Spera solo di non avere www in nessun altro posto nei tuoi url ... – Qwertie

2

una semplice scelta di reindirizzare da sottodominio sottodominio sarebbe il seguente redirect_to subdomain: 'www', :controller => 'www', :action => "index"

Questo sarebbe chiamato su un nome di dominio, ad esempio foo.apple.com sarebbe poi andare a www.apple.com

Problemi correlati