Rails 3 - проблема субдоменов, перемещающихся в Heroku - PullRequest
1 голос
/ 03 июня 2011

Я написал приложение, которое использует поддомен для каждой учетной записи пользователя для разделения сред. Все это работает нормально, кроме одного вопроса. Я не могу получить как www, так и "" для корневого пути, отличного от всех других поддоменов.

Для всех поддоменов аккаунта у меня есть корневая страница:

root :to => "applications#index"

Мне нужно, чтобы это была корневая страница для всех поддоменов, кроме пустого поддомена "" и затем "www". Для www у меня это в маршрутах:

constraints(:subdomain => "www") do
    root :to => "promos#index"
  end

С чем я борюсь, так это чтобы "" также использовал Promos # index в качестве корневого пути. Когда это не корневой путь, mywebsite.com отправляет их в индекс # приложений, который требует входа в систему. Что-то, что я не хочу, чтобы пользователи видели при первом посещении.

Есть ли способ изменить этот код, чтобы он также включал mywebsite.com, чтобы иметь другой корень? Я пробовал такие вещи, как дублирование кода с помощью "", но это приводит к путанице во всех других поддоменах, независимо от порядка. Ниже файл моего маршрута:

constraints(:subdomain => "www") do
    root :to => "promos#index"
  end  

  root :to => "applications#index"

1 Ответ

3 голосов
/ 03 июня 2011

Вы можете использовать объект, который реализует «совпадения»?чтобы сделать некоторые реальные вещи на заказ.Ниже мы установим индекс # приложений, если вы являетесь поддоменом клиента, и отправим вас в промо # индекс, если вы не

На ваших маршрутах:

Yourapp::Application.routes.draw do
  constraints(SubDomain) do
    root :to => "applications#index"
  end
  root :to => "promo#index"
  ...
end

, а затем субдоменфайл соответствия:

config / initializers / subdomain.rb

class SubDomain
  def self.matches?(request)
    case request.subdomain
    when 'www', '', nil, #admin/api/etc could also go here
      false
    else
      true
    end
  end
end

subdomain.rb также может находиться в lib (если он загружается автоматически)

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