ri > ActionController::ParamsWrapper

= ActionController::ParamsWrapper

------------------------------------------------------------------------
= Extended by:
ActiveSupport::Concern (from /home/chedong/.local/share/rdoc)

(from /home/chedong/.local/share/rdoc)
------------------------------------------------------------------------
Wraps the parameters hash into a nested hash. This will allow clients to
submit requests without having to specify any root elements.

This functionality is enabled in config/initializers/wrap_parameters.rb
and can be customized.

You could also turn it on per controller by setting the format array to
a non-empty array:

  class UsersController < ApplicationController
    wrap_parameters format: [:json, :xml, :url_encoded_form, :multipart_form]
  end

If you enable ParamsWrapper for :json format, instead of having to send
JSON parameters like this:

  {"user": {"name": "Konata"}}

You can send parameters like this:

  {"name": "Konata"}

And it will be wrapped into a nested hash with the key name matching the
controller's name. For example, if you're posting to UsersController,
your new params hash will look like this:

  {"name" => "Konata", "user" => {"name" => "Konata"}}

You can also specify the key in which the parameters should be wrapped
to, and also the list of attributes it should wrap by using either
:include or :exclude options like this:

  class UsersController < ApplicationController
    wrap_parameters :person, include: [:username, :password]
  end

On Active Record models with no :include or :exclude option set, it will
only wrap the parameters returned by the class method attribute_names.

If you're going to pass the parameters to an ActiveModel object (such as
User.new(params[:user])), you might consider passing the model class to
the method instead. The ParamsWrapper will actually try to determine the
list of attribute names from the model and only wrap those attributes:

  class UsersController < ApplicationController
    wrap_parameters Person
  end

You still could pass :include and :exclude to set the list of attributes
you want to wrap.

By default, if you don't specify the key in which the parameters would
be wrapped to, ParamsWrapper will actually try to determine if there's a
model related to it or not. This controller, for example:

  class Admin::UsersController < ApplicationController
  end

will try to check if Admin::User or User model exists, and use it to
determine the wrapper key respectively. If both models don't exist, it
will then fallback to use user as the key.
------------------------------------------------------------------------
= Constants:

EXCLUDE_PARAMETERS:
  [not documented]


Generated by phpman v4.9.26-1-g511901d · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-07-29 03:16 @216.73.217.46
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!