gpt4 book ai didi

ruby - 未定义方法 `artist' 为 nil :NilClass (NoMethodError)

转载 作者:太空宇宙 更新时间:2023-11-03 17:08:24 25 4
gpt4 key购买 nike

当我运行以下代码时出现此错误:

#!/usr/bin/env ruby -rubygems
require File.join(File.dirname(__FILE__), 'authentication')
require "csv" # faster_csv (ruby 1.9)

lines = CSV.read(File.join(File.dirname(__FILE__), 'karaoke.csv')) # Exported an Excel file as CSV
lines.slice!(0) # remove header line
collection = StorageRoom::Collection.find('collection ID')
Song = collection.entry_class
lines.each do |row|
karaoke = Song.new(:artist => row[0], :song => row[1], :genre => row[2], :file => StorageRoom::File.new_with_filename("#{karaoke.artist}#{karaoke.song}.mov"))
if karaoke.save
puts "Misuero Karaoke Latino saved: #{karaoke.artist}, #{karaoke.song}, #{karaoke.genre}"
else
puts "Misuero Karaoke Latino could not be saved: #{karaoke.errors.join(', ')}"
end
end

错误是:

import_csv.rb:15:in `block in <main>': undefined method `artist' for nil:NilClass (NoMethodError)
from import_csv.rb:14:in `each'
from import_csv.rb:14:in `<main>'

我很想了解为什么会出现此错误以及解决方案。提前致谢!

最佳答案

查看第 15 行(import_csv.rb:15 告诉您在哪里搜索问题):

karaoke = Song.new(:artist => row[0], :song => row[1], :genre => row[2], 
:file => StorageRoom::File.new_with_filename("#{karaoke.artist}#{karaoke.song}.mov"))

在赋值表达式的右侧部分,您使用 karaoke.artistkaraoke.song 来构造 :file 部分Song,但是 karaoke 变量还没有初始化(它出现在左边)。事实上,ruby 解释器 定义 karaoke 变量,当它看到赋值运算符并开始评估赋值表达式的右侧部分(以初始化变量)并失败了,因为定义变量有nil值。

关于ruby - 未定义方法 `artist' 为 nil :NilClass (NoMethodError),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10010912/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com