我似乎無法獲得新的值添加我的我的params散列。我想添加這個actor_id
關鍵PARAMS,但是這是行不通的:無法使用合併添加到參數散列
params.merge(:actor_id => 2)
當我使用logger.debug合併之前和之後我沒有看到我的actor_id
關鍵。我如何添加到params
?
我似乎無法獲得新的值添加我的我的params散列。我想添加這個actor_id
關鍵PARAMS,但是這是行不通的:無法使用合併添加到參數散列
params.merge(:actor_id => 2)
當我使用logger.debug合併之前和之後我沒有看到我的actor_id
關鍵。我如何添加到params
?
試試這個
params.merge(actor_id:2)!
它將作爲我們使用的是修改PARAMS本身!
這是因爲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
'merge'不發生變異的哈希值。 –
@JustinWood謝謝,賈斯汀。我將如何去添加params? – sbonkosky
在許多情況下,您可以添加一個bang('!')來改變該值。在這種情況下,'merge!'會修改散列。 – Zhihao