Направляющие: Маршрутизация субдомена к ресурсу

Обычно я просто бросаю их в пространство имен. Это - то, что Microsoft делала записи платформа.NET, таким образом, это - то, что я делаю также для непротиворечивости, которую Вы понимаете :)

8
задан rfunduk 7 September 2010 в 20:36
поделиться

2 ответа

Я не знаю, как сделать это с помощью map.resources . Он принимает параметр : conditions , но я не знаю, как удалить часть URL-адреса / companies / . Однако map.resources - это, прежде всего, удобный способ сгенерировать набор именованных маршрутов, который вы можете сделать вручную. Что-то вроде этого.

map.company '', :controller => 'companies', :action => 'show', :conditions => { :subdomain => /.+/, :method => :get }
map.new_company 'new', :controller => 'companies', :action => 'new', :conditions => { :subdomain => /.+/, :method => :get }
map.edit_company 'edit', :controller => 'companies', :action => 'edit', :conditions => { :subdomain => /.+/, :method => :get }
map.connect '', :controller => 'companies', :action => 'create', :conditions => { :subdomain => /.+/, :method => :post }
map.connect '', :controller => 'companies', :action => 'update', :conditions => { :subdomain => /.+/, :method => :put }
map.connect '', :controller => 'companies', :action => 'destroy', :conditions => { :subdomain => /.+/, :method => :delete }

Не тестировалось, но должно вас приблизить.

4
ответ дан 5 December 2019 в 10:43
поделиться

Можно передавать условия в маршрут ресурса, а также в именованный маршрут. В приложении, в котором я участвую, все ограничено учетной записью. О: before_filter загружает учетную запись, используя поддомен. Таким образом, для ресурсов, привязанных к учетной записи, мы хотим привязать маршруты к URL-адресам с поддоменами. СУХОЙ способ сделать это - использовать карту с опциями:

  map.with_options :conditions => {:subdomain => /.+/} do |site|
    site.resources :user_sessions, :only => [:new, :create, :destroy]
    site.resources :users
    site.login 'login', :controller => "user_sessions", :action => "new"
    site.logout 'logout', :controller => "user_sessions", :action => "destroy"
    …
  end

  map.connect 'accounts/new/:plan', :controller => "accounts", :action => "new"
  map.resources :accounts, :only => [:new, :create]

Как видите, именованный маршрут также принимает хэш условий с поддоменом. Вы также можете использовать подход, проиллюстрированный выше, Райан, или вы можете указать условия для каждого ресурса:

  map.resources :users, :conditions => {:subdomain => /.+/}
8
ответ дан 5 December 2019 в 10:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: