The official document says,
If the "Content-Type" header of your request is set to
"application/json", Rails will automatically load your parameters into
the params hash, which you can access as you would normally.
So for example, if you are sending this JSON content:
{ "company": { "name": "acme", "address": "123 Carrot Street" } }
Your controller will receive params[:company]
as { "name" => "acme", "address" => "123 Carrot Street" }
.
Also, if you've turned on config.wrap_parameters
in your initializer or called wrap_parameters
in your controller, you can safely omit the root element in the JSON parameter. In this case, the parameters will be cloned and wrapped with a key chosen based on your controller's name. So the above JSON POST can be written as:
{ "name": "acme", "address": "123 Carrot Street" }
And, assuming that you're sending the data to CompaniesController, it would then be wrapped within the :company
key like this:
{ name: "acme", address: "123 Carrot Street", company: { name: "acme", address: "123 Carrot Street" } }
So, if you send/POST { "hello": "world"}
to apples/
, then
params['apple']
will be the object for the Json payload.
class ApplesController < ApplicationController
def create
# params['apple'] is the object represents Json payload
end
end