2012-09-08 2 views
8

私はこの問題を解決するまで、私は現在壁に向かって私の頭を繰り返し叩いています。私はruby-1.9.3-p194とRailsを使っています。私はNet :: HTTP.post_formでうまくやることができる投稿要求をしようとしていますが、ヘッダーにCookieを設定する必要があるので、ここでは使用できません。 http.postは、送信されるデータに対して何らかの操作を実行しようとしているため、RoR Net :: HTTPポストエラー未定義メソッド `bytesize '

"undefined method `bytesize' for #<Hash:0xb1b6c04>" 

というエラーが表示されます。

誰かが何らかの修正や回避策を持っていますか?

おかげ

headers = {'Cookie' => 'mycookieinformationinhere'} 
uri = URI.parse("http://asite.com/where/I/want/to/go") 
http = Net::HTTP.new(uri.host, uri.port) 
response = http.post(uri.path, {'test' => 'test'}, headers) 

答えて

16

bytesize方法は上String、ないHashです。それがあなたの最初の手がかりです。第二の手がかりはNet::HTTP#postのドキュメントである:

ポスト(パス、データ、initheader =ゼロ、DEST = NIL)

data

投稿(文字列でなければならない)pathします。 headerは{'Accept' => '/'、...}のようにハッシュでなければなりません。

あなたはそれがStringを見ることを期待postに、ハッシュ、{'test' => 'test'}に合格しようとしています。私はあなたがこのような何かをしたいと思う:

http.post(uri.path, 'test=test', headers) 
+0

ああ、ありがとう、笑。私はそれを逃した。 – James

+0

http://stackoverflow.com/questions/798710/how-to-turn-a-ruby-hash-into-http-params –

関連する問題