Ruby on Rails: субдомен слишком мощный?как мне установить это правильно - PullRequest
1 голос
/ 29 ноября 2010

маршруты:

  match '/' => 'site_admin/admin#index'


  resources :link_pages
  resources :services  
  resource :user_session
  resource :account, :controller => "users"
  resources :password_resets
  resources :users
  resources :addresses
  resources :info

  match "/home", :to => 'info#home'
  match "/register", :to => 'users#new'

  root :to => 'info#home'


  match ':controller(/:action(/:id(.:format)))'

, поэтому, когда я попал на admin.lvh.me:3000/, он переходит на site_admin / admin # index ..., что здорово ... но когда я снимаюсубдомен, и просто иметь lvh.me:3000/ он идет по тому же маршруту ....

как мне заставить администратора остаться там, где он есть.и нет субдомена для перехода на мою корневую страницу, как в моем файле маршрутов?

Ответы [ 3 ]

0 голосов
/ 29 ноября 2010

Маршруты разбираются по порядку, поэтому, когда вы запрашиваете / из любого домена, он сначала находит «match» / «...» и отправляет вас на указанную страницу.Ваш поддомен вообще не входит в игру.Вы можете использовать ограничения на основе запросов для маршрутизации на основе поддоменов:

http://guides.rubyonrails.org/routing.html#request-based-constraints

0 голосов
/ 29 ноября 2010

Да @ Кори прав.Выше оба утверждения похожи, и каждый раз определяется первый определенный маршрут.Если вы измените маршрут администратора на

match '/admin' => 'site_admin/admin#index'
, тогда имеет смысл ... Что сказать ??

или иначе, используя следующий код, вы можете условно определить свой URL:

request.subdomains(0).first
выдаст вам значение субдомена - admin или blank.Но это будет происходить только с одним действием контроллера, которое определено сначала в файле route.rb.

Затем, используя это действие с использованием субдомена, вы можете решить, куда перенаправить его - на панель администратора или домашнюю страницу...

0 голосов
/ 29 ноября 2010

Не уверен, как субдомен влияет на это вообще. Возможно, вы путаете поддомен с пространством имен маршрутов (http://edgeguides.rubyonrails.org/routing.html#controller-namespaces-and-routing)?

match '/' => 'site_admin/admin#index'

Выбирается более

root :to => 'info#home'

Потому что он определен первым в файле маршрутов. Они якобы одно и то же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...