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

时间:2014-01-13 11:38:14

标签: ruby-on-rails ruby-on-rails-4

给定带有符号键的哈希,例如:{ name: 'Jeff' },将它与控制器params合并的最简单方法是什么?

使用直截了当的merge会产生错误的结果:

> {a: 1}.merge(HashWithIndifferentAccess.new(a: 2, b: 3))
  => {:a=>1, "a"=>2, "b"=>3}

所需的结果是{:a=>2, :b=>3}

1 个答案:

答案 0 :(得分:1)

有两种方法可以将Hash与rails的参数合并:

  1. 使用HashWithIndifferentAccess.new(YOUR_HASH).merge(params)或反之亦然
  2. 使用YOUR_HASH.with_indifferent_access.merge(params)或反之亦然
  3. 这两个版本的订单都很重要。 merge(XXX)的参数会覆盖调用merge方法的哈希设置。如果你想要反过来,只需交换它们。

    仅供参考:Rails为哈希类添加了一种新方法:with_indifferent_access - > Rails Doc