2011-09-15 12 views
3

現在のサブドメインの種類に応じてルート(具体的には、ルート)を指定しようとしています。サブドメインがsubdomainの場合は、controller#action1にルーティングします。サブドメインが存在する場合はcontroller#action2になりますが、ではなく、subdomainまたはwwwです。サブドメインがwwwまたは指定されていない場合はcontroller#action3になります。複数のサブドメインのルーティング

Iは、次の試み:

予想通り subdomain.myapp.comother.myapp.comに作業の両方をブラウズ
MyApp::Application.routes.draw do 
    scope :constraints => { :subdomain => "subdomain" } do 
    match "/" => "controller#action1" 
    end 

    scope :constraints => lambda {|req| req.subdomain.present? && !%w(subdomain www).include?(req.subdomain) } do 
    match "/" => "controller#action2" 
    end 

    root :to => "controller#action3" 
end 

(それぞれ、action1action2に行きます)。私はmyapp.comまたはwww.myapp.comしようとすると、しかし、私が手:私はrake routesを実行すると

Routing Error 
No route matches [GET] "/" 

が、私は

/{:subdomain=>"subdomain", :controller=>"controller", :action=>"action1"} 
    /{:controller=>"controller", :action=>"action2"} 
root/{:controller=>"controller", :action=>"action3"} 

だから私は(推測)推測その/のための2つのルートがありますので、ドン」を参照してくださいサブドメインを指定すると、フォールバックルートは2番目のものと一致しようとしますが、制約を満たさず失敗します。これを正しく動作させるには何ができますか?

答えて

1

これはルーティングフィルタの宝石のバグだったようですが、Rails 3.2の宝石の最新バージョンとルーティングの変更点で修正されているようです。

関連する問題