Ruby on rails 3 子域路由,设备不在heroku上工作
我已经使用Desive定义了几种类型的用户(成员、公司用户等),我希望为每种类型的用户的登录页面使用不同的子域 为了实现子域的匹配并重定向到适当的操作,我提到了。我的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
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:将你的评论转化为答案-这个解决方案至少对我有效,应该被投票表决。谢谢你的帮助!