文档: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 应用程序中有这个问题。

需要您对此发表意见。

最佳答案

ActionController::Parameters 是 Hash 的子类,您可以使用 params 散列上的 to_h 方法将其直接转换为散列。

但是 to_h 仅适用于列入白名单的参数,因此您可以执行以下操作:

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

但是如果你不想加入白名单,那么你只需要使用 to_unsafe_h 方法。

关于ruby-on-rails - dig 方法无法与 ActionController::Parameters 一起正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53958153/

10-12 00:55