2016-07-05 1 views
1

URLにエンコードされたURIを使用して、完全に機能しているウェブサイトがあります。しかしURIが正しくありませんRuby on Rails:それは長いのですか?

、私は私のChromeブラウザにURLを渡すしようとすると:

http://somewhere:3000/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}

- それは私のブラウザでエラーがスローされます:

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 

はまたに[2016-07-04 18:11:31] ERROR bad URIを示しをレールコンソール

バージョン:

  • rails3
  • ルビー1.9.3

それが働いて取得する方法任意のアイデア?それはURIに{}があるか、長すぎるためですか?

+0

Iが最初uuencoding試してみました '{'/'}それを修正するかどうかを確認します。 –

+0

質問を編集してコードを入力してください。また、あなたの質問を明確にしてください。 「URLを貼り付けようとしたとき」とはどういう意味ですか?どこに貼り付けますか? –

答えて

1

Rack::Utils#parse_nested_queryを使用して、着信要求時にコントローラのパスを解析し、参照:http://www.rubydoc.info/github/rack/rack/master/Rack/Utils.parse_nested_query

# config/routes.rb 

get '/find/someOne/*str' => 'find#someOne' 


# app/controllers/find_controller.rb 

class FindController < ApplicationController 
    def someOne 
    custom_params = Rack::Utils.parse_nested_query(request.env['ORIGINAL_FULLPATH']) 
    querys_hash = JSON.parse(custom_params["querys"]) 
    end 
end 

例コンソールを介し:

 
$ 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"=>""} 
関連する問題