【发布时间】:2011-12-14 18:46:59
【问题描述】:
我有这个代码:
= link_to "unsubscribe instantly", "*|UNSUB|*".html_safe
生成这个 HTML:
<a href="*%7CUNSUB%7C*">unsubscribe instantly</a>
该 |字符被转义。这行不通,因为我将此 HTML 发送到应该用取消订阅 url 替换 *|UNSUB|* 的服务。
相反,我希望 Rails/HAML 生成这个:
<a href="*|UNSUB|*">unsubscribe instantly</a>
我去了http://haml-lang.com/try.html 并输入了%a{:href => "*|UNSUB|*"} unsubscribe 并且输出是我所期望的。所以我猜这是 Rails 的问题。
更新:我在一个新的 Rails 3.1 应用程序上尝试了这个,管道没有被转义——这正是我想要的。我的主要 Rails 应用程序发生了一些奇怪的事情,导致 URL 被转义 - 现在进一步调查。
更新: 我想到了。我有一些 Rack 中间件正在运行类似的东西:
content = Nokogiri(response)
# ... processing
return content.to_html
这是对 URL 中的内容进行编码。我在这里问了一个相关的问题:Preventing Nokogiri from escaping characters in URLs
【问题讨论】:
-
你试过
!= link_to("unsubscribe instantly", "*|UNSUB|*".html_safe).html_safe吗? post
标签: ruby-on-rails escaping haml html-escape-characters