2016-08-03 104 views
0

我的应用程序包含一个表单,您可以通过它输入一个单词,提交,然后控制器将创建一个Word对象与单词本身,以及通过API从JSON获取的定义和示例。当对象不是零时,NoMethodError(未定义方法`[]'为零:NilClass)

这是冲突行:

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 

这里来的错误行:

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

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

所以我认为resultnil。所以我登出了,但结果与预期完全一样as shown in this image

我还能试试吗?

回答

0

使用结果[ “结果”]代替结果[0] [ “结果”]

@word.definition = result["results"][0]["senses"][0]["definition"][0] 
相关问题