Rails:加号用空格代替GET-Request

Fu8*_*u86 19 ruby get ruby-on-rails request params

在Rails 3(Ruby 1.9.2)中,我发送了一个请求

 Started GET "/controller/action?path=/41_+"
Run Code Online (Sandbox Code Playgroud)

但参数列表如下所示:

 {"path"=>"/41_ ",
   "controller"=>"controller",
   "action"=>"action"}
Run Code Online (Sandbox Code Playgroud)

这里出了什么问题?的-,*.标志工作正常,它就是+将用空格来代替.

mu *_*ort 24

这是正常的URL编码,加号是空格的简写:

在查询字符串中,加号被保留为空格的简写表示法.因此,必须编码真正的加号.此方法用于使查询URI更容易在不允许空格的系统中传递.

HTML5标准:

该字符是U + 0020 SPACE字符
用单个U + 002B PLUS SIGN字符(+)替换该字符.

  • 那么如何让Rails逃避参数中的`+`,以便它作为`+`接收? (2认同)
  • @Zabba:如果你想要一个加号进入你的控制器,那么你确保你对它进行URL编码.Rails应该为你照顾那个部分,如果你在客户端手工做,那么你应该(总是)使用[`encodeURIComponent`](https://developer.mozilla.org/en/JavaScript /参考/ Global_Objects/encodeURIComponent方法).如果需要,总有[`URI.encode_www_form_component`](https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/encodeURIComponent). (2认同)