在Rails 3中,子域主机路由上的子域——命中路由,而不是根



目前我有myapp.herokuapp.com作为我正在工作的一个小项目的分期。一旦完成,它将运行在myapp.com下。

当我在本地运行它时,我使用lvh。我:3000来测试东西。这很好地解决了我遇到的问题,但是由于这个暂存环境在子域下,我遇到了路由问题。

问题是我的用户得到了一个自定义子域,因此,someuser.myapp.com指向user# landing。我通过以下路由在本地完成:

  match '', to: 'users#landing', constraints: lambda { |r| r.subdomain.present? && r.subdomain != 'www' }

我的问题是,当我访问myapp.herokuapp.com时,我最终击中users#landing而不是我的root。

我脑子一片空白

完全忽略了我在做什么…

我结束了,

if request.subdomain == 'myapp'
  redirect_to root_url
else

解决了这个问题。我相信一定有更好的办法。

编辑:此外,我在application_controller.rb中添加了default_url_options

  def default_url_options
    if Rails.env.production?
      {:host => 'myapp.herokuapp.com'}
    else
      {:host => 'lvh.me'}
    end
  end