【问题标题】:Rails 3 UTF-8 query string showing up in URL?Rails 3 UTF-8 查询字符串出现在 URL 中?
【发布时间】:2010-11-05 08:49:42
【问题描述】:

我的主页上有一个搜索查询表单 (/)

<% 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 参数在那里做什么?我怎样才能摆脱它?

谢谢。

【问题讨论】:

    标签: ruby-on-rails string url ruby-on-rails-3


    【解决方案1】:

    utf8 参数(以前称为snowman)是针对 Internet Explorer 错误的 Rails 3 解决方法。

    简短的回答是 Internet Explorer 会忽略 POST 数据的 UTF8 编码,除非 POST 数据中至少包含一个 UTF8 字符。出于这个原因,Rails 在表单中注入一个 UTF8 字符来强制 IE 将所有内容都视为 UTF8 编码。

    【讨论】:

      【解决方案2】:

      这个参数是rails 3的新特性。

      以前是雪人。

      帮助 IE 真正使用 utf-8。

      避免使用 form_tag,它可以工作:

      <form action="<%= search_path %>" method="get" >
        <%= text_field_tag 'query' %>
        <%= submit_tag "Search", :name => nil%>
      </form> 
      

      【讨论】:

      • 正是我所追求的——我的搜索表单没有得到持久化,所以我只想要一个没有“tick”的 GET 请求。雪人本来可以留下来的,但他现在走了:(
      • +1 以避免在提交时传递 UTF8 参数。就我而言,我认为 UTF8 并不重要。
      • 查看我迟到多年的回复。 form_tag:enforce_utf8 选项。
      【解决方案3】:

      form_tag in Rails 4.2(可能更早)有一个:enforce_utf8 选项;

      如果设置为 false,则不输出名为 utf8 的隐藏输入。

      【讨论】:

        【解决方案4】:

        我认为每个人都很好地解释了它存在的原因,但我觉得这个问题没有得到回答,那就是:

        我怎样才能摆脱它?

        所以说的一切都是正确的,你确实需要它来帮助“IE”,但它出现在地址栏中的原因是因为你正在执行“GET”而不是“POST”。让它成为一个帖子,它就消失了,但是你也没有遵循惯例。

        归结为您最能接受哪些。

        【讨论】:

          猜你喜欢
          • 2018-03-09
          • 1970-01-01
          • 2013-01-16
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-05-23
          • 1970-01-01
          相关资源
          最近更新 更多