公式文書によると、
リクエストの「Content-Type」ヘッダーが「application/json」に設定されている場合、Railsはパラメータをparamsハッシュに自動的にロードします。これには、通常どおりにアクセスできます。
たとえば、このJSONコンテンツを送信する場合は次のようになります。
{ "company": { "name": "acme", "address": "123 Carrot Street" } }
コントローラはとparams[:company]
して受け取ります{ "name" => "acme", "address" => "123 Carrot Street" }
。
config.wrap_parameters
また、イニシャライザーでオンにした場合、またはwrap_parameters
コントローラーで呼び出した場合は、JSONパラメーターのルート要素を安全に省略できます。この場合、パラメーターは複製され、コントローラーの名前に基づいて選択されたキーでラップされます。したがって、上記のJSONPOSTは次のように記述できます。
{ "name": "acme", "address": "123 Carrot Street" }
そして、CompaniesControllerにデータを送信すると仮定すると、データは次のように:company
キー内にラップされます。
{ name: "acme", address: "123 Carrot Street", company: { name: "acme", address: "123 Carrot Street" } }
したがって、に/ POST{ "hello": "world"}
を送信するとapples/
、
params['apple']
はJsonペイロードのオブジェクトになります。
class ApplesController < ApplicationController
def create
# params['apple'] is the object represents Json payload
end
end