Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.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 删除基于这些元素的嵌套哈希元素';性质_Ruby On Rails_Ruby - Fatal编程技术网

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。这就是我最终要做的,我有一个匹配的异常数组。