开发者

rails redirect to same page but add subdomain

If a user is at

blah.com/items/index

how do I redirect them to

de.blah.com/items/index

in a way that will work for any page? Right now I'm using

<%= link_to 'German', root_url(:host => 'de' + '.' + request.do开发者_运维问答main + request.port_string) %>

but that redirects them to de.blah.com. How do I keep the rest of the url? I'm using rails 3.


Keep it simple:

redirect_to subdomain: 'de'


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

in 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


Using the subdomain-fu plugin might prove to be useful, it is also available as a gem.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜