2014-01-16 43 views
1

我似乎無法獲得新的值添加我的我的params散列。我想添加這個actor_id關鍵PARAMS,但是這是行不通的:無法使用合併添加到參數散列

params.merge(:actor_id => 2) 

當我使用logger.debug合併之前和之後我沒有看到我的actor_id關鍵。我如何添加到params

+0

'merge'不發生變異的哈希值。 –

+0

@JustinWood謝謝,賈斯汀。我將如何去添加params? – sbonkosky

+1

在許多情況下,您可以添加一個bang('!')來改變該值。在這種情況下,'merge!'會修改散列。 – Zhihao

回答

3

試試這個

params.merge(actor_id:2)!

它將作爲我們使用的是修改PARAMS本身!

1

這是因爲ActiveSupport::HashWithIndifferentAccess中的方法合併不會修改接收方,而是會返回一個新的散列,其中包含無差別訪問以及合併結果。

由於意見建議使用合併!或使用更新,這是一個別名。從的ActiveSupport

ActiveController::Parameters繼承:: HashWithIndifferentAccess

# This method has the same semantics of +update+, except it does not 
    # modify the receiver but rather returns a new hash with indifferent 
    # access with the result of the merge. 
    def merge(hash, &block) 
     self.dup.update(hash, &block) 
    end