Ruby NoMethodError(对于nil:NilClass,未定义方法“[]'”)
我有一个非常奇怪的错误例子:Ruby NoMethodError(对于nil:NilClass,未定义方法“[]'”),ruby,Ruby,我有一个非常奇怪的错误例子: NoMethodError (undefined method `[]' for nil:NilClass): app/controllers/main_controller.rb:150:in `block in find_data_label' app/controllers/main_controller.rb:149:in `each' app/controllers/main_controller.rb:149:in `find_data_label' a
NoMethodError (undefined method `[]' for nil:NilClass):
app/controllers/main_controller.rb:150:in `block in find_data_label'
app/controllers/main_controller.rb:149:in `each'
app/controllers/main_controller.rb:149:in `find_data_label'
app/controllers/main_controller.rb:125:in `data_string'
app/controllers/main_controller.rb:35:in `catch'
奇怪的是,第150行(它说错误在哪里)在一个循环中,并且在决定出错之前完美地执行了11次。我不明白为什么它可以很好地工作,但在if语句返回true的循环之前失败了一行
代码如下:
def find_data_label(label)
@fields.each do |f|
puts "f[:field_data]['Title'] = #{f[:field_data]['Title']}" # <--- line 150
if f[:field_data]['Title'] == label
return f
end
end
end
提前感谢您的帮助。您的@fields元素之一在:field\u数据中不包含标题。 在调用
@fields之前,请尝试检查@fields。每个:
Rails.logger.warn '-'*40
Rails.logger.warn @fields.inspect
检查服务器日志以查看@fields中有哪些元素。有关该错误,请参阅:
例如,也许你正在使用MongoID和一个旧版本的Ruby。是的,就是这样。出于某种原因,输出都是分段和无序的,但拼接在一起后显示:field_data=>nil。谢谢你的帮助。可能是的副本
Rails.logger.warn '-'*40
Rails.logger.warn @fields.inspect