当对象不为nil时,NoMethodError(未定义的方法`[]'为nil:NilClass)

时间:2016-08-03 15:14:42

标签: ruby-on-rails ruby json

我的应用程序包含一个表单,您可以通过该表单输入单词,提交,然后控制器将创建一个带有单词本身的Word对象,以及通过API从API获取的定义和示例。

这是冲突的一行:

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

我还能尝试什么?

1 个答案:

答案 0 :(得分:0)

使用结果[“结果”]而不是结果[0] [“结果”]

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