Html 坏URI RubyonRails:是因为太长吗?
因此,我有一个网站,完全工作,与一些URI编码的URL 但是,当我尝试将URL传递到我的chrome浏览器时:Html 坏URI RubyonRails:是因为太长吗?,html,ruby-on-rails,ruby,http,uri,Html,Ruby On Rails,Ruby,Http,Uri,因此,我有一个网站,完全工作,与一些URI编码的URL 但是,当我尝试将URL传递到我的chrome浏览器时: Bad Request bad URI `/find/someOne?utf8=%E2%9C%93&search=someThing&choicen=no&querys={%22peopleName%22%3A%22%22%2C%22peopleGroup%22%3A%22%22%2C%22place%22%3A%22%22%2C%22pip%22%3A%22
Bad Request
bad URI `/find/someOne?utf8=%E2%9C%93&search=someThing&choicen=no&querys={%22peopleName%22%3A%22%22%2C%22peopleGroup%22%3A%22%22%2C%22place%22%3A%22%22%2C%22pip%22%3A%22%22%2C%22hw%22%3A%22%22%2C%22somerock%22%3A%22%22%2C%22rocksomerock%22%3A%22%22%2C%22diedAt%22%3A%222016-01-01%20-%202016-12-31%22%2C%22borndAt%22%3A%22%22%2C%22taxRate%22%3A%22%22}'.
WEBrick/1.3.1 (Ruby/1.9.3/2014-11-13) at somewhere.com:3000
http://somewhere:3000/find/someOne?utf8=%E2%9C%93&search=someThing&choicen=no&querys={%22人姓名%22%3A%22%22%2C%22人组%22%3A%22%2C%22地点%22%3A%22%2C%22pip%22%3A%22%2C%22hw%22%3A%22%2C%22somerock%22%3A%22%2C%22somerock%22%3A%22%22%22%2C%22diedAt%22%3A%221016-01-01-01-20-%202016-12-31%22%2C%22%22%22%22%22%22%22%22%3A%22%22%22%22%22%22%22%22%2C%22%22%22%22%
--它在浏览器中向我抛出一个错误:
Bad Request
bad URI `/find/someOne?utf8=%E2%9C%93&search=someThing&choicen=no&querys={%22peopleName%22%3A%22%22%2C%22peopleGroup%22%3A%22%22%2C%22place%22%3A%22%22%2C%22pip%22%3A%22%22%2C%22hw%22%3A%22%22%2C%22somerock%22%3A%22%22%2C%22rocksomerock%22%3A%22%22%2C%22diedAt%22%3A%222016-01-01%20-%202016-12-31%22%2C%22borndAt%22%3A%22%22%2C%22taxRate%22%3A%22%22}'.
WEBrick/1.3.1 (Ruby/1.9.3/2014-11-13) at somewhere.com:3000
还显示rails控制台中的错误错误URI
[2016-07-04 18:11:31]
版本:
- 铁路3
- Ruby 1.9.3
知道如何让它工作吗?是因为URI中的
{
和}
还是因为它太长了?使用Rack::Utils#Parse_nested_query
在收到请求时解析控制器中的路径,请参阅:
#config/routes.rb
获取“/find/someOne/*str”=>“find#someOne”
#app/controllers/find_controller.rb
类FindController<应用程序控制器
定义某人
custom_params=Rack::Utils.parse_nested_查询(request.env['ORIGINAL_FULLPATH'])
querys\u hash=JSON.parse(自定义参数[“querys”])
结束
结束
通过控制台的示例:
$ bundle exec rails c
Running via Spring preloader in process 31944
Loading development environment (Rails 5.0.0)
irb(main):001:0> custom_params = Rack::Utils.parse_nested_query "utf8=%E2%9C%93&search=someThing&choicen=no&querys={%22peopleName%22%3A%22%22%2C%22peopleGroup%22%3A%22%22%2C%22place%22%3A%22%22%2C%22pip%22%3A%22%22%2C%22hw%22%3A%22%22%2C%22somerock%22%3A%22%22%2C%22rocksomerock%22%3A%22%22%2C%22diedAt%22%3A%222016-01-01%20-%202016-12-31%22%2C%22borndAt%22%3A%22%22%2C%22taxRate%22%3A%22%22}"
=> {"utf8"=>"✓", "search"=>"someThing", "choicen"=>"no", "querys"=>"{\"peopleName\":\"\",\"peopleGroup\":\"\",\"place\":\"\",\"pip\":\"\",\"hw\":\"\",\"somerock\":\"\",\"rocksomerock\":\"\",\"diedAt\":\"2016-01-01 - 2016-12-31\",\"borndAt\":\"\",\"taxRate\":\"\"}"}
irb(main):002:0> querys_hash = JSON.parse custom_params["querys"]
=> {"peopleName"=>"", "peopleGroup"=>"", "place"=>"", "pip"=>"", "hw"=>"", "somerock"=>"", "rocksomerock"=>"", "diedAt"=>"2016-01-01 - 2016-12-31", "borndAt"=>"", "taxRate"=>""}
$bundle exec rails c
通过过程31944中的弹簧预紧器运行
加载开发环境(Rails 5.0.0)
irb(main):001:0>自定义参数=框架::Utils.parse_嵌套查询“utf8=%E2%9C%93&search=someThing&choicen=no&querys={%22人姓名%22%3A%22%22%2C%22人组%22%3A%22%2C%22地点%22%3A%22%2C%22pip%22%3A%22%2C%22hw%22%3A%22%2C%22somerock%22%3A%22%2C%22somerock%22%3A%22%22%22%2C%22diedAt%22%3A%222016-01-01-01-20-%202016-12-31%22%2C%22Bornandat%22%3A%22%22%22%22%2C%22%22%22%22%22%22%3A%22%22%22%22%22%
=>{“utf8”=>“✓", "搜索“=>”某物“,”选择“=>”否“,”查询“=>”{“peopleName\”:“\”,“peopleGroup\”:“\”,“place\”:“\”,“pip\”:“\”,“hw\”:“\”,“somerock\”:“\”,“rocksomerock\”:“\”,“diedAt\”:“2016-01-01-2016-12-31\,“Bornadat\”,“taxRate\”,“taxRate\”
irb(main):002:0>querys_hash=JSON.parse自定义_参数[“querys”]
=>{“peopleName”=>,“peopleGroup”=>,“place”=>,“pip”=>,“hw”=>,“somerock”=>,“rocksomerock”=>,“diedAt”=>“2016-01-01-2016-12-31”,“Bornat”=>,“taxRate”=>}
我首先尝试对
{
/}
进行编码,看看是否可以修复。请编辑您的问题以包含您的代码。另外,请澄清您的问题。“当我尝试粘贴URL时”是什么意思?将其粘贴到何处?