给定带有符号键的哈希,例如:{ name: 'Jeff' }
,将它与控制器params
合并的最简单方法是什么?
使用直截了当的merge
会产生错误的结果:
> {a: 1}.merge(HashWithIndifferentAccess.new(a: 2, b: 3))
=> {:a=>1, "a"=>2, "b"=>3}
所需的结果是{:a=>2, :b=>3}
。
答案 0 :(得分:1)
有两种方法可以将Hash与rails的参数合并:
HashWithIndifferentAccess.new(YOUR_HASH).merge(params)
或反之亦然YOUR_HASH.with_indifferent_access.merge(params)
或反之亦然这两个版本的订单都很重要。 merge(XXX)
的参数会覆盖调用merge
方法的哈希设置。如果你想要反过来,只需交换它们。
仅供参考:Rails为哈希类添加了一种新方法:with_indifferent_access
- > Rails Doc