繁体   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