[英]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.