加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 3:用户输入转义在视图和邮件程序中的工

发布时间:2020-12-17 03:20:32 所属栏目:百科 来源:网络整理
导读:我在我的视图和邮件中使用以下代码集: %= simple_format(auto_link(h(user_input))) % 我首先在user_input上调用html_safe(h),以逃避任何危险的代码.然后我调用auto_link来启用其输入中的任何链接,然后我调用simple_format来启用换行符等. 这在我的视图中完
我在我的视图和邮件中使用以下代码集:

<%= simple_format(auto_link(h(user_input))) %>

我首先在user_input上调用html_safe(h),以逃避任何危险的代码.然后我调用auto_link来启用其输入中的任何链接,然后我调用simple_format来启用换行符等.

这在我的视图中完美运行,并正确显示以下内容,完全转义,但有一个工作链接:

" http://google.com "

但是,当ActionMailer电子邮件显示完全相同时,我看到所有特殊字符,包括我的自动链接,双重转义(& amp; quot;例如,因此无法正确显示):

&amp;quot; &lt;a href=3D&quot;http://google.com&quot;&gt;http://google.=com&lt;/a&gt; &amp;quot;

出于某种原因,我需要再次将其重新标记为html_safe以使其正常工作:

<%= simple_format(auto_link(h(user_input))).html_safe %>

这正确输出:

&quot; <a href=3D"http://google.com">http://google.com</a> &quot;

有关为什么ActionView和ActionMailer以不同方式处理相同代码的任何想法?

解决方法

如果从电子邮件模板中调用simple_format(以呈现换行符),您获得的行为非常不寻常,并且事实证明这个帮助程序被私有方法覆盖.

无论如何,您可以使用此hack访问电子邮件模板中的simple_format:

ApplicationController.helpers.simple_format()

希望在另一个rails版本中,这将被修复.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读