NoMethodError (неопределенный метод `[] 'для nil: NilClass)

У меня есть очень странный случай этой ошибки:

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

И это вывод, прежде чем я получу ошибку:

f[:field_data]['Title'] = Name
f[:field_data]['Title'] = Name
f[:field_data]['Title'] = Mobile number
f[:field_data]['Title'] = Email
f[:field_data]['Title'] = Date of birth
f[:field_data]['Title'] = Gender
f[:field_data]['Title'] = Street name
f[:field_data]['Title'] = Street number
f[:field_data]['Title'] = My local Puckles store is in
f[:field_data]['Title'] = Suburb
f[:field_data]['Title'] = Postcode
Completed 500 Internal Server Error in 2047ms

Заранее благодарю за любую помощь.

Ответы на вопрос(2)

Об этой ошибке см. Также:http://mongoid.org/en/mongoid/docs/tips.html

e.g. возможно, вы используете MongoID и более старую версию Ruby.

Решение Вопроса

Один из ваших элементов @fields не содержит заголовок в: field_data. Попробуйте проверить @fields перед вызовом@fields.each:

Rails.logger.warn '-'*40
Rails.logger.warn @fields.inspect

Проверьте журналы сервера, чтобы увидеть, какие элементы у вас есть в @fields.

Ваш ответ на вопрос