Ruby on rails 3 子域路由,设备不在heroku上工作

Ruby on rails 3 子域路由,设备不在heroku上工作,ruby-on-rails-3,heroku,dns,devise,cname,Ruby On Rails 3,Heroku,Dns,Devise,Cname,我已经使用Desive定义了几种类型的用户(成员、公司用户等),我希望为每种类型的用户的登录页面使用不同的子域 为了实现子域的匹配并重定向到适当的操作,我提到了。我的routes.rb文件如下所示: devise_for :company_users, :controllers => { :registrations => 'company_users/registrations', :sessions => 'company_users/sessions' } devis

我已经使用Desive定义了几种类型的用户(成员、公司用户等),我希望为每种类型的用户的登录页面使用不同的子域

为了实现子域的匹配并重定向到适当的操作,我提到了。我的
routes.rb
文件如下所示:

devise_for :company_users, :controllers => { :registrations => 'company_users/registrations', :sessions => 'company_users/sessions'  }

devise_scope :company_user do
  constraints Subdomain do
    match '/' => 'company_users/sessions#new'
  end
end
和我的
lib/subdomain.rb
文件:

class Subdomain
  def self.matches?(request)
    request.subdomain.present? and request.subdomain =~ /\Acompanies\z/
  end
end
在本地,它工作得非常好。我已经使用companys.lvh.me:3000(正如同一个railscast建议的那样)进行了测试,它确实重定向到了正确的登录页面

为了尝试在Heroku上运行,我使用
Heroku域:add companys.mydomain.com
,添加了域,并在DNS服务器上添加了一条新的CNAME记录,指向我的Heroku应用程序


但是,当我尝试访问companys.mydomain.com时,它会将我重定向到根路径,而不是正确的登录页面。我对正在发生的事情一无所知。任何帮助都将不胜感激。

当您域的tld与heroku域的tld不同时,会发生这种情况


我的是.com.br,我必须将config.action\u dispatch.tld\u length=2添加到production.rb,这样Rails才能正确解析URL并重定向到正确的子域。

您的域与heroku域具有相同的tld吗?我的是.com.br,没有将config.action\u dispatch.tld\u length=2添加到production.rb,我得到了相同的行为,因为Rails错误地删除了子域。嗯,谢谢你的评论!我想可能是吧(我的tld也是br:))。如果有效,我会要求你将你的评论转化为答案,这样我就可以接受。@Kadu:将你的评论转化为答案-这个解决方案至少对我有效,应该被投票表决。谢谢你的帮助!