rails重定向到同一页面但添加子域

时间:2011-04-19 06:57:08

标签: ruby-on-rails subdomain

如果用户在

blah.com/items/index

如何将它们重定向到

de.blah.com/items/index

以适用于任何页面的方式?现在我正在使用

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

但是将它们重定向到de.blah.com。如何保留网址的其余部分?我正在使用rails 3。

3 个答案:

答案 0 :(得分:11)

保持简单:

redirect_to subdomain: 'de'

答案 1 :(得分:3)

<%= link_to 'German', params.merge({:host => with_subdomain(:de)}) %>
/ 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

答案 2 :(得分:1)

使用subdomain-fu插件可能会很有用,它也可以作为宝石使用。