ruby-on-rails - dig 方法不能与 ActionController::Parameters 一起正常工作

标签 ruby-on-rails ruby ruby-on-rails-5

文档: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/

相关文章:

sql - 想要使用 mysql 根据表中的状态来选择记录

巨大字符串上的 Ruby 字符串操作

ruby-on-rails - 对象常量的内部结构

ruby-on-rails - 如何在 rails 5 api 中获取请求 header cookie

ruby-on-rails - 等待时间后 Sidekiq 排队作业

javascript - 如何链接这两个对象(图像映射形状和复选框)?

ruby-on-rails - 如何在Rails控制台中通过脚本测试SQLite数据库?

ruby-on-rails - 传递给#or 的关系必须在结构上兼容。不兼容的值 : [:references]

ruby-on-rails - 使用 HAML 而不是 ERB 导致测试失败

ruby-on-rails - 是否需要“bundler/setup”与运行 Bundler.setup 相同?