Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从rails 3到4的多域路由应用程序失败无效路由名称,已在使用:';根';(错误)_Ruby On Rails_Ruby_Routing_Multiple Domains - Fatal编程技术网

Ruby on rails 从rails 3到4的多域路由应用程序失败无效路由名称,已在使用:';根';(错误)

Ruby on rails 从rails 3到4的多域路由应用程序失败无效路由名称,已在使用:';根';(错误),ruby-on-rails,ruby,routing,multiple-domains,Ruby On Rails,Ruby,Routing,Multiple Domains,有这样一个routes.rb的旧rails 3应用程序 RailsAppli::Application.routes.draw do root :to => "landing#pos", :constraints => { :host => "pos.com.ar" } root :to => "landing#desa", :constraints => { :host => "desa.com.ar" } root :to => "l

有这样一个routes.rb的旧rails 3应用程序

RailsAppli::Application.routes.draw do
  root :to => "landing#pos", :constraints => { :host => "pos.com.ar" }

  root :to => "landing#desa", :constraints => { :host => "desa.com.ar" }

  root :to => "landing#plan", :constraints => { :host => "dise.com.ar" }
这很好,但我升级到rails 4和

无效的路由名称,已在使用:'root'(ArgumentError)

有什么问题吗


谢谢。

根据以下内容更新答案:

缩短:

1) 在lib/domain_constraint.rb中定义自定义约束类:

class DomainConstraint
  def initialize(domain)
    @domains = [domain].flatten
  end

  def matches?(request)
    @domains.include? request.domain
  end
end
2) 在管线中使用具有新块语法的类

constraints DomainConstraint.new('mydomain.com') do
  root :to => 'mydomain#index'
end

root :to => 'main#index'
还是老式的选项语法

root :to => 'mydomain#index', :constraints => DomainConstraint.new('mydomain.com')
好了

只有一个根

然后


谢谢

好的,谢谢。但我需要在我的应用程序中将不同的域名根到特定的登陆点。像pos.com.ar到landing#pos.在rails 3中,这个routes.rb很好rails 4的方向是什么?谢谢谢谢,但我需要域名,是不同的域名,一个应用程序为这些域名提供不同的登录页。好的,看这个:你的应用程序的域名是什么?
RailsAppli::Application.routes.draw do
    get '/', :to => "landing#pos", :constraints => { :host => "pos.com.ar" }

    get '/', :to => "landing#desa", :constraints => { :host => "desa.com.ar" }

    get '/', :to => "landing#plan", :constraints => { :host => "dise.com.ar" }