[英]How to merge Hash with Rails controller's params?
给定带有符号键的哈希,例如: { name: 'Jeff' }
,将其与控制器params
合并的最简单方法是什么?
使用直接merge
会产生错误的结果:
> {a: 1}.merge(HashWithIndifferentAccess.new(a: 2, b: 3))
=> {:a=>1, "a"=>2, "b"=>3}
期望的结果是{:a=>2, :b=>3}
。
有两种将Hash与rails的参数合并的方法:
HashWithIndifferentAccess.new(YOUR_HASH).merge(params)
或反之亦然 YOUR_HASH.with_indifferent_access.merge(params)
,反之亦然 顺序在两个变体中都重要。 merge(XXX)
的参数merge(XXX)
覆盖哈希的设置,该设置称为merge
方法。 反之亦然,只需将它们交换即可。
仅供参考:Rails向Hash类添加了一个新方法: with_indifferent_access
> Rails Doc
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.