rails GETのクエリパラメータにjsonstringを設定した時に、controllerで内容を取得するにはどうすればよいでしょうか?
ログ上は次のように出力されます。
Started GET "/hoge?{"fuga":[{"foo":"A"}]}" for ::1 at 2017-XX-XX XX:XX:XX +0900 Processing by HogeController#index as */* parameters: {"{\"fuga\":"=>{"{\"foo\":\"A\"}"=>{"}"=>nil}}, "hoge"=>{}} Completed 200 OK in 1ms (Views: 0.3ms | ActiveRecord: 0.9ms)
ここで1行目の最初と最後の"以外の{}":[]の文字は実際にはPercentEncodingされたものですが、
分かりやすく実際のキャラクターで書きました。
送るときもPercentEncodingして送っています。
なお、関係ないと思いますが、送信側アプリはswiftで作ったものです。
Content-Typeにはapplication/jsonを指定しています。
railsのバージョンは5.0.1です。
h_hash = JSON.parse(params) p h_hash
とすると、
TypeError (no implicit conversion of ActionController::Parameters into String):
のエラーとなります。
pp = params[:fuga] pp.present?
の結果はfalseでした。
GETのクエリパラメータにjsonをstringifyしたものを渡すサンプルがネット上にあまり見当たりませんでした。
この設計はrailsではあまりよろしくないということなのでしょうか?
rails以外なら問題ないのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/02/22 10:37
2017/02/22 10:42
2017/02/22 11:07
2017/02/22 11:19
2017/02/25 03:40