mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 23:28:02 +00:00
Add Params Is A Hash With Indifferent Access as a Rails TIL
This commit is contained in:
@@ -10,7 +10,7 @@ pairing with smart people at Hashrocket.
|
|||||||
|
|
||||||
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
For a steady stream of TILs, [sign up for my newsletter](https://crafty-builder-6996.ck.page/e169c61186).
|
||||||
|
|
||||||
_1299 TILs and counting..._
|
_1300 TILs and counting..._
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -832,6 +832,7 @@ _1299 TILs and counting..._
|
|||||||
- [Migrating Up Down Up](rails/migrating-up-down-up.md)
|
- [Migrating Up Down Up](rails/migrating-up-down-up.md)
|
||||||
- [Order Matters For `rescue_from` Blocks](rails/order-matters-for-rescue-from-blocks.md)
|
- [Order Matters For `rescue_from` Blocks](rails/order-matters-for-rescue-from-blocks.md)
|
||||||
- [Params Includes Submission Button Info](rails/params-includes-submission-button-info.md)
|
- [Params Includes Submission Button Info](rails/params-includes-submission-button-info.md)
|
||||||
|
- [Params Is A Hash With Indifferent Access](rails/params-is-a-hash-with-indifferent-access.md)
|
||||||
- [Parse Query Params From A URL](rails/parse-query-params-from-a-url.md)
|
- [Parse Query Params From A URL](rails/parse-query-params-from-a-url.md)
|
||||||
- [Perform SQL Explain With ActiveRecord](rails/perform-sql-explain-with-activerecord.md)
|
- [Perform SQL Explain With ActiveRecord](rails/perform-sql-explain-with-activerecord.md)
|
||||||
- [Polymorphic Path Helpers](rails/polymorphic-path-helpers.md)
|
- [Polymorphic Path Helpers](rails/polymorphic-path-helpers.md)
|
||||||
|
|||||||
32
rails/params-is-a-hash-with-indifferent-access.md
Normal file
32
rails/params-is-a-hash-with-indifferent-access.md
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
# Params Is A Hash With Indifferent Access
|
||||||
|
|
||||||
|
When you have an instance of `ActionController::Parameters`—which you often do
|
||||||
|
with `params` in a Rails controller—under the hood you have a
|
||||||
|
`HashWithIndifferentAccess`.
|
||||||
|
|
||||||
|
Here is what the initializer looks like when you call
|
||||||
|
`ActionController::Parameters.new(some_hash)`.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
def initialize(parameters = {}, logging_context = {})
|
||||||
|
@parameters = parameters.with_indifferent_access
|
||||||
|
@logging_context = logging_context
|
||||||
|
@permitted = self.class.permit_all_parameters
|
||||||
|
end
|
||||||
|
```
|
||||||
|
|
||||||
|
This means you can reference the keys in your parameters as either a _string_
|
||||||
|
key or a _symbol_ key.
|
||||||
|
|
||||||
|
```ruby
|
||||||
|
> params = ActionController::Parameters.new({ username: 'tacocat' })
|
||||||
|
=> #<ActionController::Parameters {"username"=>"tacocat"} permitted: false>
|
||||||
|
> params['username']
|
||||||
|
=> "tacocat"
|
||||||
|
> params[:username]
|
||||||
|
=> "tacocat"
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that `ActiveSupport::HashWithIndifferentAccess` is not an ancestor of the
|
||||||
|
`ActionController::Parameters` class (like it once used to be), but is just how
|
||||||
|
the incoming hash is transformed when initialized.
|
||||||
Reference in New Issue
Block a user