我的应用程序包含一个表单,您可以通过该表单输入单词,提交,然后控制器将创建一个带有单词本身的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):
所以我假设result
是nil
。所以我将其记录下来但结果完全符合预期as shown in this image
我还能尝试什么?
答案 0 :(得分:0)
使用结果[“结果”]而不是结果[0] [“结果”]
@word.definition = result["results"][0]["senses"][0]["definition"][0]