Rails 3 Строка запроса UTF-8 отображается в URL?
У меня есть поисковый запрос на моей домашней странице (/)
<% form_tag(search_path, :method => :get) do %>
<%= text_field_tag 'query' %>
<%= submit_tag "Search", :name => nil%>
<% end %>
Когда я отправлю эту форму поиска, я хочу закончить в (/search? query = foo). Однако сейчас я получаю /search? Utf8 =% E2% 9C% 93 & query = foo. Какой там параметр utf8? Как я могу избавиться от него?
Спасибо.
Ответы
Ответ 1
Параметр utf8 (ранее известный как snowman) является обходным решением Rails 3 для ошибки Internet Explorer.
Короткий ответ заключается в том, что Internet Explorer игнорирует кодировку USTF данных POST, если в данные POST не включен хотя бы один UTF8 char. По этой причине Rails вводит символ UTF8 в форме, чтобы заставить IE обрабатывать все по мере кодирования UTF8.
Ответ 2
Этот параметр является новой функцией рельсов 3.
Это был ранее снеговик.
Это помогает IE действительно использовать utf-8.
Избегайте использования form_tag, и он работает:
<form action="<%= search_path %>" method="get" >
<%= text_field_tag 'query' %>
<%= submit_tag "Search", :name => nil%>
</form>
Ответ 3
form_tag
в Rails 4.2 (и, возможно, ранее) имеет параметр :enforce_utf8
;
Если установлено значение false, скрытый ввод с именем utf8 не выводится.
Ответ 4
Я думаю, что все отлично поработали, объясняя, почему он существует, но я чувствую, что на вопрос не ответил, а именно:
Как я могу избавиться от него?
Итак, все сказанное правильно, вам нужно, чтобы он присутствовал, чтобы помочь с "IE", но причина, по которой он появляется в вашей адресной строке, заключается в том, что вы выполняете "GET", а не "POST". Сделать это сообщение, и оно исчезло, но тогда вы также не следуете конвенции.
Доходит до того, какое из них наиболее приемлемо для вас.