簡體   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