我有这个代码:
= link_to "unsubscribe instantly", "*|UNSUB|*".html_safe
这会生成这个 HTML:
<a href="*%7CUNSUB%7C*">unsubscribe instantly</a>
该| 字符被转义。那是行不通的,因为我将此 HTML 发送到应该*|UNSUB|*
用取消订阅 url 替换的服务。
相反,我希望 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 中的内容进行编码。我在这里问了一个相关的问题:防止 Nokogiri 在 URL 中转义字符