簡體   English   中英

您可以在Rails操作中從post_params中刪除嗎?

[英]Can you delete from post_params in a Rails action?

我正在嘗試從Rails update操作中的post_params哈希中delete ,但是delete調用似乎被忽略了。

puts "before: #{post_params.inspect}"
  # output: before {"headline"=>"blah", "tags"=>"foo bar"}
puts "deleted: #{post_params.delete("tags")}"
  # output: deleted: foo bar
puts "after:  #{post_params.inspect}"
  # output: before {"headline"=>"blah", "tags"=>"foo bar"}
  # WHY IS "tags" STILL THERE?

我在犯某種基本的菜鳥錯誤嗎? 這讓我發瘋,因為它看起來是如此愚蠢。

我非常確定post_params是控制器中的一種方法,在該方法中您將模型的屬性列入白名單,並且每次調用該方法都會返回一個新的哈希實例。 這就是為什么tags仍然存在的原因,因為它並未從實際哈希(即params中刪除。

您應該從實際哈希(即params刪除tags鍵,而不是從post_params方法調用返回的哈希中刪除。

例如:

如果params = {"post" => {"headline"=>"blah", "tags"=>"foo bar"}}

然后使用params["post"].delete("tags")

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM