【问题标题】:delete_if returning undefined method `include?' for nil:NilClassdelete_if 返回未定义的方法“包括?”对于零:NilClass
【发布时间】:2018-10-10 22:21:23
【问题描述】:

不知道为什么会这样,我只是使用我在这里看到的方法:delete_if

但显然我做错了什么,就是说不出来。

这是我的代码:

non_enabled_speeds = ["Expedited", "Standard"]

parsed_rates = [{:service_name=>"Expedited",
  :service_code=>"XYZ", :total_price=>800, :currency=>"USD"}, 
  {:service_name=>"Priority", :service_code=>"PYT", 
:total_price=>1300, :currency=>"USD"},
  {:service_name=>"Standard", :service_code=>"XYZ", 
:total_price=>500, :currency=>"USD"}]

non_enabled_speeds.each do |non_enabled_rate|
  parsed_rates.delete_if 
{|rate| rate[:speed].include?(non_enabled_rate)}
end

我知道delete_if 在幕后使用了include?,但我不确定为什么会出现此错误:

undefined method `include?' for nil:NilClass

【问题讨论】:

  • 你的价格对:speed没有价值
  • 天哪..需要更多的咖啡..谢谢
  • Ruby 是一种面向对象的语言,而不是面向字符串的 Arrays-of-Hashes-of-Strings 的语言。我怀疑如果你定义了一些类来处理这些数据,你会发现这更容易编码和调试 - 例如Rate.

标签: ruby-on-rails ruby


【解决方案1】:

不,这与delete_if 无关。您的一个(或多个)rate[:speed]s 是nil

{|rate| rate.fetch(:speed, []).include?(non_enabled_rate)}

【讨论】:

  • 更像他们所有人 :)
  • 糟糕,我没有检查数组:D
  • arghhhhh.. 很抱歉这个帖子.. 咖啡不够!!
猜你喜欢
  • 1970-01-01
  • 2015-02-26
  • 2011-02-05
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多