小编典典

Ruby on Rails 3 表单中的 _snowman 参数有什么用?

all

在 Ruby on Rails 3(当前使用 Beta
4)中,我看到在使用form_tagorform_for助手时,会出现一个名为_snowman“钸”(Unicode
\x9731)的隐藏字段。

那么,这是为了什么?


阅读 120

收藏
2022-08-17

共1个答案

小编典典

这是为了支持 Internet Explorer 5
并鼓励它使用UTF-8作为其表单。

此处看到的提交消息详细说明如下:

修复几个已知的网络编码问题:

  • 在所有表单上指定接受字符集。所有最近的浏览器,以及 IE5+,都将使用为表单参数指定的编码
  • 不幸的是,除非表单值中的至少一个字符不在页面的字符集中,否则 IE5+ 不会查看接受字符集。由于用户可以覆盖默认
    字符集(Rails 设置为 UTF-8),我们提供了一个包含 unicode 字符的隐藏输入,强制 IE 查看接受字符集。
  • 现在绝大多数 Web 输入都是 UTF-8,我们将入站参数设置为 UTF-8。这将消除 ASCII-8BIT 和
    UTF-8 之间编码不兼容的许多情况。
  • 您可以放心地忽略 params[:_snowman]

简而言之,您可以放心地忽略此参数。

不过,我不确定我们为什么要支持像 Internet Explorer 5 这样的旧技术。如果你问我,这似乎是一个非常非 Ruby on Rails 的决定。

2022-08-17