2011-09-02 49 views
4

形式我有一个问题,在元搜索搜索表单:轨误差,因为UTF8 =✓与元搜索

当我提交搜索表单(GET方法)我有,因为utf8=✓的500错误param由rails添加。

http://localhost:3000/items?utf8=✓&search[brand_contains]=levi

如果我删除在URL中的复选标记(✓),然后按ENTER它工作得很好。

我使用rails 3.0.9和ruby 1.9.2。

我真的不知道如何解决这个问题,所以如果你有任何建议,我会很乐意听到他们。 谢谢你的帮助。

编辑:

这里是我的形式:

= form_for @search, :class => "recherche" do |f| 
    = f.label :brand 
    = f.text_field :brand_contains 
    = f.submit "Rechercher" 

和错误:

Started GET "/items?utf8=%E2%9C%93&search[brand_contains]=levi&commit=Rechercher" for 127.0.0.1 at 2011-09-02 17:39:39 +0200 

ArgumentError (invalid byte sequence in US-ASCII): 
+0

我觉得这个链接:http://stackoverflow.com/questions/4104474/rails-3-utf-8-query-string显示在网址将帮助你与你的问题:) –

+0

我明白为什么有这个参数,但我不知道如何解决我的问题:( – guts

+0

有错误(名称,堆栈等)将是 –

回答

3

我会尝试实施这样的事情(从链接铅从以下我的评论):

<form action="<%= search_path %>" method="get" class="recherche" > 
    <%= text_field_tag 'search[brand_contains]' %> 
    <%= submit_tag "Rechercher", :name => nil %> 
</form> 

如果这不起作用,那么请看看这个问题:removing "utf8=✓" from rails 3 form submissions这可能对您有帮助。

-1

你可以尝试添加以下行到environment.rb中:

Encoding.default_external = Encoding::UTF_8 
Encoding.default_internal = Encoding::UTF_8 
+0

它什么也没做:( – guts

+0

更新了我的答案,我假设你在这个改变之后重新启动服务器... – dexter

+0

@pefs评论了“Where in environment.rb我需要添加[这些行] 第一行,最后一行?“ – drs