你可以在Rails动作中从post_params中删除吗?

时间:2014-07-21 15:20:04

标签: ruby-on-rails

我尝试从我的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?

我是否犯了某种基本的菜鸟错误?这让我发疯,因为它看起来很蠢。

1 个答案:

答案 0 :(得分:2)

我非常确定post_params是控制器中的一种方法,您可以将模型的属性列入白名单,并且每次调用它时此方法都会返回一个新的哈希实例。 这就是为什么tags仍然存在的原因,因为它不是从实际哈希中删除,即首先是params

您应该从实际哈希中删除tags密钥,即params,而不是从post_params方法调用返回的哈希中删除。

例如:

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

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