我尝试从我的Rails post_params
操作中的update
哈希值中删除,但我的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?
我是否犯了某种基本的菜鸟错误?这让我发疯,因为它看起来很蠢。
答案 0 :(得分:2)
我非常确定post_params
是控制器中的一种方法,您可以将模型的属性列入白名单,并且每次调用它时此方法都会返回一个新的哈希实例。
这就是为什么tags
仍然存在的原因,因为它不是从实际哈希中删除,即首先是params
。
您应该从实际哈希中删除tags
密钥,即params
,而不是从post_params
方法调用返回的哈希中删除。
例如:
如果params = {"post" => {"headline"=>"blah", "tags"=>"foo bar"}}
然后使用params["post"].delete("tags")