Я использую следующий набор кода как в моих представлениях, так и в почтовой программе:
<%= simple_format(auto_link(h(user_input))) %>
Я начинаю с вызова html_safe (h) для user_input, чтобы избежать любого опасного кода. Затем я вызываю auto_link, чтобы включить любые ссылки в их входных данных, а затем я вызываю simple_format, чтобы включить разрывы строк и тому подобное.
На мой взгляд, это прекрасно работает и правильно отображает следующее, полностью экранированное, но с рабочей ссылкой:
" http://google.com "
Однако, когда то же самое отображается в электронном письме ActionMailer, я вижу, что все специальные символы, включая мою автолинк, дважды экранированы (например, &quot;
не отображается правильно):
&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 по-разному обрабатывают один и тот же код?