我在用

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

并生成一个链接
"localhost:3000http://www.cnn.com"

出于某种原因,它没有将http://识别为表示外部url,并将其视为相对url。
我试图转到link_to的源并将其复制到我的应用程序助手中。我发现.html_safe正在进行转换,因为当我取出它时,它按预期工作。
我不知道它的用途。当我在HAML:Util.html_safe的源代码中复制时,它也工作得很好。因此,我假设html_safe正在使用的html_safe正在解析其他内容,即使视图是一个haml文件。
根据我在haml方法中看到的,似乎link_to在认为字符串不安全时调用html_safe来转换字符串。
我使用的是普通的美式英语/拉丁语字符集,所以我不明白为什么它不能正确解析html_safe!
我用的是Rails 2.3.5。
目前,我计划将这个Href手工编码到我的视图中,以避免为外部链接调用http://,但是如果有人能帮我弄清楚发生了什么,我将非常感激。谢谢!

最佳答案

我无法重现这种行为,但听起来像个虫子。另外,请注意Rails2.3.5已经很旧了。我相信当前的2.3.x版本是2.3.12。
顺便说一下,您所指的api文档是针对rails 3.1.3的。因此,您将无法从这些文档中获得有用的2.3.5调试信息。阅读应用程序中实际使用的源代码的最简单方法是查看开发机器上的gems文件夹。
不管怎样,像你这样手工编码<a>标签肯定没什么问题。实际上,它的效率稍高一些,因为它避免了在link_to中执行ruby代码。所以,最好还是继续做你正在做的事。

10-08 04:50