Ruby on rails 删除基于这些元素的嵌套哈希元素';性质
我有一些数据:Ruby on rails 删除基于这些元素的嵌套哈希元素';性质,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一些数据: data = { "total_records"=>3, "records"=> [{"title"=>"Val1", "coins"=>1}, {"title"=>"Val2", "coins"=>1}, {"title"=>"Val3", "coins"=>1}] } 如何删除标题为“Val1”| |“Val2”的记录 我尝试了以下几点: @data.records.each_value d
data = {
"total_records"=>3,
"records"=>
[{"title"=>"Val1",
"coins"=>1},
{"title"=>"Val2",
"coins"=>1},
{"title"=>"Val3",
"coins"=>1}]
}
如何删除标题为“Val1”| |“Val2”的记录
我尝试了以下几点:
@data.records.each_value do |e|
if exceptions.include?(e.title)
delete @envelopes.records.e
end
end
但是我在@数据上得到了一个无方法错误。记录非常简单
data['records'].delete_if{ |h| %w(Val1 Val2).include?(h['title']) }
您也可以这样做:
data['records'].delete_if{ |h| (h['title'] == 'Val1') || (h['title'] == 'Val2') }
“没有”不是有效的问题描述。另外,没有显示的代码也没有显示。当我在hash上调用它时,它是一个no-method错误。当它(“某些消息”)被发送到nil时,会引发no-method错误。这是一个非常基本的错误——在预期的情况下什么都没有(零)。在这种情况下,@data
很可能为零-是否分配/加载了它?是的,我只是没有正确访问对象的子对象。请参见下文。在包含要删除的值的delete_if
块外定义一个数组:vals=%w(Val1 Val2);数据['records']。如果{h | vals.include?(h['title']),则删除{u
。只需两个条目,运行速度将提高约10%,并且随着数据['records']
或VAL
的增长,运行速度将更快。按原样,每次delete\u if
循环都必须重新定义数组,这会浪费CPU。这就是我最终要做的,我有一个匹配的异常数组。