Маршрутизация для нескольких поддоменов - PullRequest
4 голосов
/ 15 сентября 2011

Я пытаюсь указать маршруты (в частности, маршрут root), в зависимости от текущего субдомена.Я хочу направить на controller#action1, если субдомен subdomain;controller#action2 если субдомен присутствует, но нет subdomain или wwwcontroller#action3, если субдомен www или не указан.

Я попытался сделать следующее:

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

Просмотр до subdomain.myapp.com и other.myapp.com оба работают как положено (собирается action1 и action2 соответственно).Однако, когда я пытаюсь myapp.com или www.myapp.com, я получаю:

Routing Error
No route matches [GET] "/"

Когда я запускаю rake routes, я вижу

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

Так что я предполагаю (предположив), чтопоскольку есть два маршрута для /, в которых не указан поддомен, мой запасной маршрут пытается соответствовать второму, но затем не удовлетворяет ограничениям и дает сбой?Что я могу сделать, чтобы заставить это работать должным образом?

1 Ответ

1 голос
/ 01 июня 2012

Похоже, что это ошибка в геме фильтра маршрутизации, и она исправлена ​​с более поздних версий гема и изменений маршрутизации в Rails 3.2.

...