2017-04-13 43 views
0

我有一個網址https://www.openhub.net這是我的軌道4.2.7應用程序。我在另一個系統上有一個單獨的子域,它是https://code.openhub.net/。如果您碰到第二個鏈接,這會將您重新路由到停用的頁面。什麼是code.openhub.net網址將被分解,將被重新路由到openhub.net。所以我想要做的是,當有人試圖去code.openhub.net我的軌道應用程序有openhub.net將提供靜態頁面。問題是我無法概念化這將如何工作。例如,下面是路徑下的rails文檔片段。如何在route.rb中將子域路由到rails應用程序?

3.9基於請求的約束 您也可以根據返回字符串的請求對象上的任何方法約束路由。

您指定的請求,基於約束您指定的 段約束以同樣的方式:通過調用Request對象 上的方法具有相同的名稱作爲

get 'photos', to: 'photos#index', constraints: { subdomain: 'admin' } 

You can also specify constraints in a block form: 

namespace :admin do 
    constraints subdomain: 'admin' do 
    resources :photos 
    end 
end 

請求限制工作散列鍵,然後將返回值 與散列值進行比較。因此,約束值應該與相應的Request對象方法返回類型相匹配。例如: 約束條件:{subdomain:'api'}將匹配api子域名爲 ,但使用符號約束:{subdomain :: api}將不會是 ,因爲request.subdomain返回'api'作爲String。

我明白這份文件的意思,但是當我嘗試將這些代碼付諸實踐時,我很難過。這裏是我的routing.rb文件:

get '???', to: '???', constraints: { subdomain: 'code' } 

據我瞭解,網址中的子域名限制部分將是代碼,但將getto是什麼?我怎麼知道會得到什麼?我是否簡單地將get code.openhub.net替換爲CodeController#index?有沒有人試圖做過這樣的事情?從文檔中我看到請求對象有一個我可以調用的方法original_url。我可以利用這個方法嗎?任何幫助將不勝感激。

回答

0

所列的請求對象的屬性:

get '/', to: 'code#index', constraints: { subdomain: 'code' } 

這將請求路由到https://code.openhub.net/到您的CodeController中的index方法。

但是,該URL仍然會說https://code.openhub.net/。如果你不想這樣做,你可以嘗試重定向,像這樣:

get '/', to: redirect('https://www.openhub.net/'), constraints: { subdomain: 'code' } 
+0

感謝您的幫助! –

相關問題