2013-08-27 5 views
0

У меня есть приложение Rails, работающее на сервере. Это большой проект, поэтому есть много задействованных маршрутов, и два домена указывают на корень на данный момент. Я хотел бы каким-то образом сконструировать мой routes.rb, чтобы интерпретировать один домен, чтобы перенести его в определенную часть приложения, как если бы это был корень, а другой использовать для других.Маршруты Rails: разные домены в разных местах

Что-то вроде этого (очень псевдокоде, надеюсь, вы получите идею):

whole_app.com 
whole_app.com/documents 
whole_app.com/share 
whole_app.com/users 
partial_app.com, :points_to => 'whole_app.com/share' 

Может Rails справиться с этим? Спасибо!

ответ

0

Будет ли он /share основан на каких-то критериях? если так что вы можете сделать это:

routes.rb

root :to => 'pages#home' 

pages_controller.rb

def home 
    if (some condition is met) 
    redirect_to this_path 
    else 
    render :layout => 'that' 
    end 
end 
+0

Ну, да, я мог проверить домен в контроллере. Похоже, что лучше управлять им с помощью 'routes.rb'. –

2

Вы можете достичь этого путем переопределения метода url_options по умолчанию в контроллере приложения. Это будет отменять URL-адрес хоста для каждого запроса.

class ApplicationController < ActionController::Base 
    .... 
    def default_url_options 
    if some_condition 
     {:host => "partial_app.com"} 
    else 
     {:host => "whole_app.com"} 
    end 
    end 
    .... 
end 

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

match "/my_url" => redirect("http://google.com/"), :as => :my_url_path 

Лучший способ это сделать настройки на сервере, чтобы перенаправить некоторые URL в определенном месте.