Ruby on rails Rails 3:用户输入转义在视图和邮件程序中的工作方式不同
我在我的视图和邮件中都使用了以下代码集:Ruby on rails Rails 3:用户输入转义在视图和邮件程序中的工作方式不同,ruby-on-rails,ruby-on-rails-3,xss,actionmailer,actionview,Ruby On Rails,Ruby On Rails 3,Xss,Actionmailer,Actionview,我在我的视图和邮件中都使用了以下代码集: <%= simple_format(auto_link(h(user_input))) %> 但是,当ActionMailer电子邮件中显示完全相同的字符时,我看到所有特殊字符,包括我的自动链接,都是双重转义的(例如,“”,结果显示不正确): 出于某种原因,我需要再次将其标记为html_安全以使其正常工作: <%= simple_format(auto_link(h(user_input))).html_safe %> 这
<%= simple_format(auto_link(h(user_input))) %>
但是,当ActionMailer电子邮件中显示完全相同的字符时,我看到所有特殊字符,包括我的自动链接,都是双重转义的(例如,“
”,结果显示不正确):
出于某种原因,我需要再次将其标记为html_安全以使其正常工作:
<%= simple_format(auto_link(h(user_input))).html_safe %>
这将正确地输出:
" <a href=3D"http://google.com">http://google.com</a> "
“”
关于为什么ActionView和ActionMailer对同一代码的处理方式不同,你有什么想法吗?如果你从电子邮件模板中调用simple_格式(以呈现换行符),你得到的行为是非常不寻常的,而且这个助手被一个私有方法覆盖了 无论如何,您可以使用以下方法访问电子邮件模板中的简单_格式:
ApplicationController.helpers.simple_format()
希望在另一个rails版本中可以修复此问题。@mu太短了,我的电子邮件模板文件名为notify.html.erb
" <a href=3D"http://google.com">http://google.com</a> "
ApplicationController.helpers.simple_format()