2013-01-24 16 views
0

所以我試圖在我的routes.rb重定向。當我離開我的網域時發生錯誤。Rails重定向路由不良主機組件

match "/partners/" => redirect("/partners.html") 

導航到/合作伙伴/給出了這樣的錯誤頁面:

URI::InvalidComponentError 

bad component(expected host component): frontend_rails.dev 

但是,它的工作,如果我把我們全域的重定向。

match "/partners/" => redirect("http://example.com/partners.html") 

但是對於我的開發服務器,我不喜歡鏈接去我們的生產服務器。根據rails doc,這應該被自動添加:

在所有這些情況下,如果您沒有提供主導主機(http://www.example.com),Rails將採取這些細節從當前請求。

任何想法爲什麼它不喜歡我的相對重定向?謝謝!

+0

試着放棄幾個字符:匹配的最後一個'/'和目標匹配的'.html'擴展名:'match「/ partners」=> redirect(「/ partners」)'。它應該適合[Rails API文檔示例](http://api.rubyonrails.org/classes/ActionDispatch/Routing/Redirection.html#method-i-redirect)。 –

回答

3

差不多一年後,我終於意識到問題所在。它實際上是一個不好的URI。 GitHub中的回購被稱爲frontend_rails。我使用了Pow服務器,它根據您的文件夾名稱爲您提供主機(當您簽出一個項目時,默認爲GitHub倉庫的名稱),所以http://frontend_rails.dev

但是,技術上不允許在URI中使用下劃線。這是絆倒URI的寶石。我將我的項目frontend_rails鏈接到前端導軌,現在它可以工作。 Voilà!

+0

heureka!花了我一個小時來弄清楚這一點。感謝您發佈解決方案。 –