Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 可以在Rails操作中从post_参数中删除吗?_Ruby On Rails - Fatal编程技术网

Ruby on rails 可以在Rails操作中从post_参数中删除吗?

Ruby on rails 可以在Rails操作中从post_参数中删除吗?,ruby-on-rails,Ruby On Rails,我试图从Railsupdate操作中的post_参数散列中删除,但我的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_p

我试图从Rails
update
操作中的
post_参数
散列中删除,但我的
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
是控制器中的一种方法,您可以在其中白名单模型的属性,该方法每次调用时都会返回一个新的哈希实例。 这就是为什么
标记
仍然存在的原因,因为它没有从实际哈希中删除,即
参数

您应该从实际哈希(即
params
)中删除
标记
键,而不是从
post_params
方法调用返回的哈希中删除

例如:

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


然后使用
params[“post”]。删除(“标记”)

Argh。这完全是一种方法。我写的方法(复制/粘贴,随便什么)。我是个白痴。这种事经常发生。:)控制器级别的属性白名单部分是在Rails 4中添加的。这就是
post_params
的来源。