私はこのコードを持っています:
= 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の文字をエスケープするのを防ぐ