Метод dig не работает правильно с ActionController :: Parameters - PullRequest
0 голосов
/ 28 декабря 2018

Документация: https://api.rubyonrails.org/classes/ActionController/Parameters.html#method-i-dig

Я запускаю rails c и пишу это:

params = ActionController::Parameters.new(foo: { bar: { baz: 1 } })

И еще:

params.dig(:foo, :bar, :baz)

Эти две строки я взял изстраница, ссылка на которую приведена выше.

В результате получаю nil.

При работе с Hash все нормально.Возникла проблема при работе с ActionController::Parameters.У меня есть эта проблема внутри приложения Rails.

Вам нужно ваше мнение по этому поводу.

1 Ответ

0 голосов
/ 28 декабря 2018

ActionController :: Parameters является подклассом Hash, вы можете преобразовать его непосредственно в хеш, используя метод to_h для хэша params.

Однако to_h будет работать только с параметрами из белого списка, поэтому вы можете сделать что-нибудьнапример:

params = ActionController::Parameters.new(foo: { bar: { baz: 1 } })
params.permit!
params.to_h.dig(:foo, :bar, :baz)

Но если вместо этого вы не хотите вносить белый список, вам просто нужно использовать метод to_unsafe_h.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...