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”。 让它成为一个职位,它走了,但你也没有遵循惯例。
归结到哪些是你最可以接受的。