Rails 3的UTF-8查询string显示在URL?

我的主页上有一个search查询表单(/)

<% form_tag(search_path, :method => :get) do %> <%= text_field_tag 'query' %> <%= submit_tag "Search", :name => nil%> <% end %> 

当我提交这个search表单时,我想最终在(/ search?query = foo)。 但是,现在我得到/search?utf8 =%E2%9C%93&query = foo。 那里有什么utf8参数? 我怎样才能摆脱它?

谢谢。

utf8参数(以前称为“ 雪人” )是针对Internet Explorer错误的Rails 3解决方法。

简短的答案是,除非POST数据中至less包含一个UTF8字符,否则Internet Explorer将忽略POST数据的UTF8编码。 出于这个原因,Rails在表单中插入一个UTF8字符,强制IE将所有内容视为UTF8编码。

这个参数是rails 3的一个新function。

这是以前的雪人。

它有助于IE真正使用utf-8。

避免使用form_tag,它的工作原理:

 <form action="<%= search_path %>" method="get" > <%= text_field_tag 'query' %> <%= submit_tag "Search", :name => nil%> </form> 

Rails 4.2中的form_tag (可能更早)有一个:enforce_utf8选项;

如果设置为false,则不输出名称为utf8的隐藏input。

我想每个人都做了很好的工作来解释为什么它存在,但是我觉得这个问题没有得到回答,那就是:

我怎样才能摆脱它?

所以说一切正确,你需要它来帮助“IE”,但它之所以出现在你的地址栏是因为你正在做一个“GET”而不是“POST”。 让它成为一个职位,它走了,但你也没有遵循惯例。

归结到哪些是你最可以接受的。