dig方法不适用于ActionController :: Parameters

时间:2018-12-28 11:50:40

标签: 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应用程序中遇到了这个问题。

对此需要您的意见。

1 个答案:

答案 0 :(得分:2)

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方法。