2016-08-03 7 views
0

Meine App besteht in einem Formular, über das Sie ein Wort eingeben können, senden, und der Controller wird dann ein Word Objekt mit dem Wort selbst erstellen und die Definition und ein Beispiel, das über JSON von einer API abgerufen wird.NoMethodError (undefinierte Methode `[] 'für nil: NilClass) wenn Objekt nicht 0 ist

Dies ist die widersprüchliche Zeile:

def create 
    @word = Word.new(word_params) 

    url = "http://api.pearson.com/v2/dictionaries/entries?headword=#{@word.word_name}" 

    Rails.logger.info url 
    uri = URI(url) 
    Rails.logger.info uri 
    response = Net::HTTP.get(uri) 
    Rails.logger.info response 
    result = ActiveSupport::JSON.decode(response) 
    Rails.logger.info result 

    @word.definition = result[0]["results"][0]["senses"][0]["definition"][0] 
    @word.example = result[0]["results"][0]["senses"][0]["translation"][0]["example"][0]["text"] 
    @word.save 
    redirect_to @word 
end 

Und hier kommt die Fehlerzeile:

@word.definition = result[0]["results"][0]["senses"][0]["definition"][0] 

FATAL -- :NoMethodError (undefined method `[]' for nil:NilClass): 

So ging ich davon aus, dass resultnil war. Also habe ich mich ausgeloggt aber das Ergebnis ist genau wie erwartet as shown in this image

Was kann ich sonst noch versuchen?

Antwort

0

Verwenden Ergebnis [ "Ergebnisse"] statt result [0] [ "Ergebnisse"]

@word.definition = result["results"][0]["senses"][0]["definition"][0] 
Verwandte Themen