繁体   English   中英

如何将Hash与Rails控制器的参数合并?

[英]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的参数合并的方法:

  1. 使用HashWithIndifferentAccess.new(YOUR_HASH).merge(params)或反之亦然
  2. 使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM