我的主页上有一个搜索查询表单(/)
<% form_tag(search_path, :method => :get) do %>
<%= text_field_tag 'query' %>
<%= submit_tag "Search", :name => nil%>
<% end %>
当我提交此搜索表单时,我想结束(/ search?query = foo)。但是,现在我得到/搜索?utf8 =%E2%9C%93&amp; query = foo。那个utf8参数在那里做什么?我怎么能摆脱它?
感谢。
答案 0 :(得分:46)
utf8参数(以前称为snowman)是针对Internet Explorer错误的Rails 3解决方法。
简短的回答是Internet Explorer忽略POST数据UTF8编码,除非POST数据中包含至少一个UTF8字符。出于这个原因,Rails在表单中注入一个UTF8字符,迫使IE将所有内容视为UTF8编码。
答案 1 :(得分:31)
此参数是rails 3的新功能。
以前是雪人。
它帮助IE真正使用utf-8。
避免使用form_tag,它可以工作:
<form action="<%= search_path %>" method="get" >
<%= text_field_tag 'query' %>
<%= submit_tag "Search", :name => nil%>
</form>
答案 2 :(得分:13)
form_tag
in Rails 4.2(可能更早)有一个:enforce_utf8
选项;
如果设置为false,则不输出名为utf8的隐藏输入。
答案 3 :(得分:2)
我认为每个人都很好地解释了它存在的原因,但我觉得这个问题没有得到解答,那就是:
我怎样摆脱它?
所以说的一切都是正确的,你确实需要它来帮助“IE”但是它出现在你的地址栏中的原因是因为你正在做“GET”而不是“POST”。把它作为一个帖子它已经消失了,但是你也没有遵循惯例。
归结为哪些是你最容易接受的。