ruby-on-rails - dig 方法不能与 ActionController::Parameters 一起正常工作
问题描述
文档: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 方法。
推荐阅读
- css - JetBrains WebStorm 中的 CSS AutoPrefixer
- javascript - 在带有路由器视图的 Vue3 中使用异步设置()时我得到了空白
- node.js - node.js 应用程序中的连接池设置,它连接到 Azure GraphDB 并使用 gremlin 进行查询
- php - Laravel 8.x 在抛出 NotFoundHttpException 时返回状态码 200 而不是 404
- mongodb - 根据 mongo db 中的 group by 字段获取所有记录作为列表
- r - 我将如何编写一个将向量作为输入并使用 R 中的 for 循环评估其大小的函数?
- python - 反转 DataFrame 的前两列并附加结果
- html - 位置固定为父容器宽度
- ansible - Ansible 字典值覆盖非字典值
- react-testing-library - 如何在 setup.test.js 中结合酶和反应测试库的配置