Class: Hanami::Action::Params
- Inherits:
-
BaseParams
- Object
- BaseParams
- Hanami::Action::Params
- Includes:
- Validations::Form
- Defined in:
- lib/hanami/action/params.rb
Overview
A set of params requested by the client
It's able to extract the relevant params from a Rack env of from an Hash.
There are three scenarios:
* When used with Hanami::Router: it contains only the params from the request
* When used standalone: it contains all the Rack env
* Default: it returns the given hash as it is. It's useful for testing purposes.
Defined Under Namespace
Classes: Errors
Instance Attribute Summary collapse
-
#errors ⇒ Hash
readonly
Returns structured error messages.
Attributes inherited from BaseParams
Class Method Summary collapse
-
._base_rules ⇒ Object
private
This is a Hanami::Validations extension point.
-
.params(&blk) ⇒ Object
Define params validations.
Instance Method Summary collapse
-
#deconstruct_keys ⇒ ::Hash
Pattern-matching support.
-
#error_messages(error_set = errors) ⇒ Array
Returns flat collection of full error messages.
-
#initialize(env) ⇒ Params
constructor
private
Initialize the params and freeze them.
-
#raw ⇒ Hash
Returns raw params from Rack env.
-
#to_h ⇒ ::Hash
(also: #to_hash)
Serialize validated params to Hash.
-
#valid? ⇒ TrueClass, FalseClass
Returns true if no validation errors are found, false otherwise.
Methods inherited from BaseParams
Constructor Details
#initialize(env) ⇒ Params
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Initialize the params and freeze them.
159 160 161 162 163 164 165 166 |
# File 'lib/hanami/action/params.rb', line 159 def initialize(env) @env = env super(_extract_params) validation = validate @params = validation.to_h @errors = Errors.new(validation.) freeze end |
Instance Attribute Details
#errors ⇒ Hash (readonly)
Returns structured error messages
192 193 194 |
# File 'lib/hanami/action/params.rb', line 192 def errors @errors end |
Class Method Details
._base_rules ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
This is a Hanami::Validations extension point
114 115 116 117 118 |
# File 'lib/hanami/action/params.rb', line 114 def self._base_rules lambda do optional(:_csrf_token).filled(:str?) end end |
.params(&blk) ⇒ Object
Define params validations
147 148 149 |
# File 'lib/hanami/action/params.rb', line 147 def self.params(&blk) validations(&blk || -> {}) end |
Instance Method Details
#deconstruct_keys ⇒ ::Hash
Pattern-matching support
252 253 254 |
# File 'lib/hanami/action/params.rb', line 252 def deconstruct_keys(*) to_hash end |
#error_messages(error_set = errors) ⇒ Array
Returns flat collection of full error messages
210 211 212 213 214 215 216 217 218 219 220 221 222 |
# File 'lib/hanami/action/params.rb', line 210 def (error_set = errors) error_set.each_with_object([]) do |(key, ), result| k = Utils::String.titleize(key) msgs = if .is_a?(::Hash) () else .map { || "#{k} #{}" } end result.concat(msgs) end end |
#raw ⇒ Hash
Returns raw params from Rack env
173 174 175 |
# File 'lib/hanami/action/params.rb', line 173 def raw @input end |
#to_h ⇒ ::Hash Also known as: to_hash
Serialize validated params to Hash
242 243 244 |
# File 'lib/hanami/action/params.rb', line 242 def to_h @params end |
#valid? ⇒ TrueClass, FalseClass
Returns true if no validation errors are found, false otherwise.
233 234 235 |
# File 'lib/hanami/action/params.rb', line 233 def valid? errors.empty? end |