【发布时间】:2011-05-22 14:49:11
【问题描述】:
所以我尝试使用 Rails URL 助手 (page_url) 创建包含特殊字符的 URL,包括 & 符号。大多数情况都像您期望的那样工作:
(rdb:1) page_url('foo', :host => 'host')
"http://host/pages/foo"
(rdb:1) page_url('foo_%_bar', :host => 'host')
"http://host/pages/foo_%25_bar"
但由于某些奇怪的原因,与号没有转义:
(rdb:1) page_url('foo_&_bar', :host => 'host')
"http://host/pages/foo_&_bar"
如果我预先转义它们,它们就会损坏:
(rdb:1) page_url('foo_%26_bar', :host => 'host')
"http://host/pages/foo_%2526_bar"
另一方面,CGI::escape 可以很好地逃脱它们:
(rdb:1) CGI::escape('foo_&_bar')
"foo_%26_bar"
发生了什么事,我该如何解决这个问题? (就是比gsub('&', '%26') 更好的东西。)
【问题讨论】:
-
嗯.. 我实际上找不到专门称为 page_url 的 rails 助手(在 apidock 网站上查看)-您确定这是正确的方法名称吗?你的意思是 url_for 吗?
-
我有一个名为“page”的 ActiveRecord,它的 _url 助手是自动创建的。
-
啊——对。你的描述中没有体现出来:)
-
在深入研究源代码后,在我的答案中添加了更多内容。
标签: ruby-on-rails helper url-encoding