文档: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 hash 上的 to_h 方法将其直接转换为 hash。
但是 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/