Ruby on rails 可以在Rails操作中从post_参数中删除吗?
我试图从RailsRuby 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
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
的来源。