2011-04-19 8 views
6

Si un usuario está enrieles redirigen a misma página pero añaden subdominio

blah.com/items/index 

cómo los redirección a

de.blah.com/items/index 

de una manera que funcione para cualquier página? En este momento estoy usando

<%= link_to 'German', root_url(:host => 'de' + '.' + request.domain + request.port_string) %> 

pero eso los redirige a de.blah.com. ¿Cómo guardo el resto de la url? Estoy usando los carriles 3.

Respuesta

3
<%= link_to 'German', params.merge({:host => with_subdomain(:de)}) %> 

en app/helpers/url_helper.rb

module UrlHelper 
    def with_subdomain(subdomain) 
    subdomain = (subdomain || "") 
    subdomain = "" if I18n.default_locale.to_s == subdomain 
    subdomain += "." unless subdomain.empty? 
    [subdomain, request.domain(tld_length), request.port_string].join 
    end 

    def url_for(options = nil) 
    if options.kind_of?(Hash) && options.has_key?(:subdomain) 
     options[:host] = with_subdomain(options.delete(:subdomain)) 
    end 
    super 
    end 

    def tld_length 
    tld_length = case Rails.env 
     when 'production' then 2 
     when 'development' then 0 
     else 0 
    end 
    end 
end 
+0

o puede escribir: 'params.merge ({: subdominio => 'de'})', pero por lo general necesitan url_helper –

+0

esto sólo se une a la cadena de dominio + + puerto subdominio ¿derecho? Quiero mantener toda la url. – Dan

+0

No, con esto obtendrás toda la url. Porque haces esto: params.merge (...) - conserva los parámetros actuales con acción y controlador. –

1

Usando el plugin subdomain-fu podría llegar a ser útil, también está disponible como una joya.

+1

Prefiero no agregar una gema solo para esto, todo lo demás funciona. – Dan

10

Que sea sencillo:

redirect_to subdomain: 'de' 
Cuestiones relacionadas