Я использую следующий набор кода как в своих представлениях, так и в почтовой программе:
<%= simple_format(auto_link(h(user_input))) %>
Я начинаю с вызова html_safe (h) для user_input, чтобы избежать опасного кода. Затем я вызываю auto_link, чтобы включить любые ссылки в их вводе, а затем я вызываю simple_format, чтобы включить разрывы строк и т. Д.
Это отлично работает на мой взгляд и правильно отображает следующее, полностью экранированное, но с работающей ссылкой:
" http://google.com "
Однако, когда то же самое отображается в электронном письме ActionMailer, я вижу, что все специальные символы, включая мою автоссылку, дважды экранированы (например, "
в результате отображается неправильно. ):
&quot; <a href=3D"http://google.com">http://google.=com</a> &quot;
По какой-то причине мне нужно снова пометить его как html_safe, чтобы он заработал:
<%= simple_format(auto_link(h(user_input))).html_safe %>
Это правильно выводит:
" <a href=3D"http://google.com">http://google.com</a> "
Есть идеи, почему ActionView и ActionMailer по-разному обрабатывают один и тот же код?