2012-01-05 10 views
3

我使用的link_to外部URL視爲內部儘管以http開始://(軌道2)

link_to "Click Here", "http://www.cnn.com" 

及其製造具有以下HREF

"localhost:3000http://www.cnn.com" 

一個鏈路由於某種原因,它不會將http://識別爲指示外部URL,並將其視爲相對URL。

我試着去link_to的來源,並將其複製到我的應用程序助手。我發現.html_safe正在進行轉換,因爲當我拔出它時,它按預期工作。我想不出哪個html_safe它的用途。當我複製HAML:Util.html_safe的來源時,它也運行良好。因此,我認爲link_to正在使用的html_safe正在解析爲其他內容,即使該視圖是Haml文件。

根據我在Haml方法中看到的內容,似乎html_safe在它認爲不安全時調用html_safe!來轉換字符串。

我使用的是正常的美國英文/拉丁字符集,所以我不明白爲什麼它不解析http://正確

我使用Rails 2.3.5。

現在,我計劃將href手動編碼到我的視圖中,以避免爲外部鏈接調用link_to,但如果有人能幫助我弄清楚發生了什麼,我將不勝感激。謝謝!

+0

小點。不要使用「點擊這裏」它無論如何都不是描述性的或有幫助的 – Yule 2012-01-05 16:08:46

+0

我不會爲靜態鏈接使用動態鏈接創建;它總是比較慢。 – Nick 2012-01-06 01:25:13

回答

2

我無法重現此行爲,但它聽起來像一個錯誤。另請注意,Rails 2.3.5已經很老了。我相信目前的2.3.x版本是2.3.12。

作爲一個側面說明,您所指的API文檔是針對Rails 3.1.3的。所以你將無法從這些文檔中獲得有用的2.3.5調試信息。閱讀應用程序中實際使用的源代碼的最簡單方法是查看開發計算機上的gems文件夾。

無論如何,手動編碼<a>標籤絕對沒有錯,就像你在做什麼一樣。事實上,它的效率稍高一些,因爲它避免了在link_to中執行Ruby代碼。所以,實際上最好的做法就是繼續做你正在做的事情。

0

我在ERB文件中遇到了同樣的問題,我的問題在我用來代替引用的未引用鏈接並在之後調用html_safe時解決。也許你的問題也會被保護起來。