Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 3 UTF-8 query string showing up in URL?

I have a search query form on my home page (/)

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

When I submit this search form, I want to end up at (/search?query=foo). However, right now I get /search?utf8=%E2%9C%93&query=foo. What's that utf8 parameter doing there? How can I get rid of it?

Thanks.

like image 671
Tim Avatar asked Nov 05 '10 08:11

Tim


2 Answers

The utf8 parameter (formerly known as snowman) is a Rails 3 workaround for an Internet Explorer bug.

The short answer is that Internet Explorer ignores POST data UTF8 encoding unless at least one UTF8 char is included in the POST data. For this reason, Rails injects an UTF8 character in the form to force IE to treat everything as UTF8 encoded.

like image 174
Simone Carletti Avatar answered Sep 19 '22 16:09

Simone Carletti


This parameter is a new feature of rails 3.

It was previously the snowman.

It helps IE to really use utf-8.

Avoid using form_tag and it works:

<form action="<%= search_path %>" method="get" >   <%= text_field_tag 'query' %>   <%= submit_tag "Search", :name => nil%> </form>  
like image 35
shingara Avatar answered Sep 19 '22 16:09

shingara