ruby-on-rails - 为什么即使条件为真,拒绝也不能处理我的哈希?

标签 ruby-on-rails arrays ruby hash rails-console

我有以下哈希

{"goes_by"=>[nil, ""], "middle_name"=>[nil, ""], "suffix"=>[nil, ""], "jersey"=>["8", "8A"]}

我正在尝试编写一个语句来拒绝任何具有带 nil & ""的嵌套数组的元素。所以我写了下面的命令来尝试执行这个但是它返回 nil 就好像哈希没有任何变化一样......

Player.find(286).audits.first.audited_changes.reject! {|x| x[1][0].blank? && x[1][1].blank? }
         => nil 

但是当我打印出结果时,其中三个元素的条件为真。我在这里缺少什么?

Player.find(286).audits.first.audited_changes.each {|x| puts x[1][0].blank? && x[1][1].blank? }

    true
    true
    true
    false

     => {"goes_by"=>[nil, ""], "middle_name"=>[nil, ""], "suffix"=>[nil, ""], "jersey"=>["8", "8A"]} 

最佳答案

首先,当您在哈希上调用 reject! 时,请记住您的 block 应该采用两个参数,而不是一个。在您的情况下,参数 x 始终是哈希的键,因此分别为:goes_by、middle_name、suffix、

所以 block 应该是这样的:

.reject! { |键,数组| array.all? { |array_item| array_item.空白? }

关于ruby-on-rails - 为什么即使条件为真,拒绝也不能处理我的哈希?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30143680/

相关文章:

html - 如何将 "link_to"放在整张卡下?

ruby - 无法安装 Nokogiri gem,找不到 "libxml/parser.h",但它在那里,为什么?

javascript - JQuery-File-Upload 客户端图像使用 coffeescript 调整大小

java - 为什么 ArrayList 在内部使用 Object[](而不是 E[])?

ruby-on-rails - Heroku 上的 Ruby on Rails 部署 - bootstrap-sass

javascript - 在javascript中计算数组中的重复数组

JavaScript 数组迭代器

ruby-on-rails - 如何计算 Ruby 中的耶稣受难日

ruby-on-rails - haml_tag 直接输出到 Haml 模板

ruby-on-rails - 如何确定 ActiveRecord::Relation 的类型