jpmobile/jpmobile — pull request #54 by ryooo321 (2013-02-19 12:39:59+00:00)
Title: jsonデータのpostに対応

お世話になっております
ryooo321と申します。
いつも jpmobile を使わせてもらっています。

XMLHttpRequestでjsonをpostした際にjsonのpost内容がencodeされてしまい、
ActionPackのActionDispatch::ParamsParserで「Error occurred while parsing request parameters.」エラーが発生します。

状況
* rails3.2.11
* jpmobile 3.0.7

クライアントから下記のようなjavascriptコードでjsonをpostした際、
```javascript
var req = new XMLHttpRequest();
req.open("POST", "/hoge", true);
req.setRequestHeader("Content-Type", "application/json");
params = {"index":"0"}
req.send(JSON.stringify(params));
```

jpmobileのparse_queryで下記のように変換され、
```ruby
p env['rack.input'].read
=>'{"index":"0"}'

env['rack.input'] = StringIO.new(parse_query(env['rack.input'].read))

p env['rack.input'].read
=>'%7B%22index%22%3A%220%22%7D='
```

ActionPackのActionDispatch::ParamsParserでエラーが発生します。
```ruby
Error occurred while parsing request parameters.
Contents:

MultiJson::DecodeError (795: unexpected token at '%7B%22index%22%3A%220%22%7D=')
```

env['CONTENT_TYPE'] =~ /application\/json|application\/xml/
でない場合のみ、parse_query処理を通過するよう修正しました。

※ 上記エラーにより[better_errors](https://github.com/charliesome/better_errors)が利用できず気づきました。

よろしくお願いいたします