У меня есть этот код:
= 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-адресов - теперь изучим его подробнее.
UPDATE :
Я понял. У меня было какое-то промежуточное ПО Rack, которое работало примерно так:
content = Nokogiri(response)
# ... processing
return content.to_html
Это было кодирование материала внутри URL. Я задал связанный вопрос здесь: Предотвращение экранирования символов Nokogiri в URL