Rails url属性的值不能包含符号'#'

时间:2014-03-24 08:48:54

标签: ruby-on-rails ruby http url uri

我尝试过这样的发送请求。

  

本地主机:3000 / WS / job_histories /索引的agent_id =#1000

但是在控制器上我已经收到agent_id=''或者喜欢这个

  

本地主机:3000 / WS / job_histories /索引的agent_id = 10#00

我已收到agent_id='10'。我认为问题是因为Rails像评论一样理解它。 我怎样才能正确接收我的数据。 Rails并没有给我任何例外。

3 个答案:

答案 0 :(得分:6)

哈希符号为fragment identifier,您的浏览器不会将其发送到网络服务器。

如果您想发送它,则需要对其进行网址编码(%23),您可以使用CGI.escape('#')实现此目的。

答案 1 :(得分:5)

这是完全正常的,哈希属于客户端,它们不会发送到服务器。

#代表一个哈希,所以删除它或编码它

答案 2 :(得分:4)

散列片段不会从浏览器发送到服务器,因此对于任何服务器端框架而言,这都不会起作用,而不仅仅是Rails。

来自Wikipedia, Fragment identifiers

  

客户端在检索文档时不应该向服务器发送URI片段......

来自URL Fragments and Redirects

  

URL的Fragment组件是从哈希符号(#)开始的URL的结尾。 URL片段永远不会在HTTP请求中发送到服务器......