从routes.rb文件中检测请求域

时间:2016-01-28 19:04:07

标签: ruby-on-rails ruby

我有多个域名,例如foo.combaz.com,指向相同的应用程序 对于其中一些域,我需要在URL中包含区域设置,对于其他域,区域设置不应出现在URL中。
例如,foo.com/en/aboutbaz.com/about相同。

我的想法是,根据域名在网址中有条件地包含(:locale)内容。

我想知道是否有可能在routes.rb文件中检测到请求的域名?
例如request.domain之类的内容,可以从控制器获得,但可以从routes.rb文件获得。

1 个答案:

答案 0 :(得分:1)

从答案https://stackoverflow.com/a/4737007/2018293开始。您可以在lib/domain_constraint.rb;

中定义自定义约束类
class DomainConstraint
  def initialize(domain)
    @domains = [domain].flatten
  end

  def matches?(request)
    @domains.include? request.domain
  end
end

然后在你的路线中使用它;

constraints DomainConstraint.new('mydomain.com') do
  root :to => 'mydomain#index'
  #other routes for the domain
end