[英]Can someone explain why I get this error message on localhost:3000?
尝试加载时,我不断在 localhost:3000 上收到以下错误消息
nil:NilClass 的未定义方法 `<<'
提取的源(围绕第 10 行):8 9 10 11 12 13
@cabins =Cabin.group(:ship_id).count
@cabins.each do |group|
@cabins_available <<group[1]
@cabins_available <<group[1]
end
puts @cabins_available
这是代码
class TravelagentController < ApplicationController
def index
@cruises = Cruise.all
@cruise_names = []
@cruises.each do |cruise|
@cruise_names <<cruise.name
end
@cabins =Cabin.group(:ship_id).count
@cabins.each do |group|
@cabins_available <<group[1]
@cabins_available <<group[1]
end
puts @cabins_available
puts @cruise_names
end
end
欢迎使用 stackoverflow。
请尝试从某人那里获得基本知识,这样您就不会在这里“被欺负”(正如您可能在想的那样),因为您的问题非常基本,我理解每个人都在某个时候开始,但应该成为自我思考的一部分在这里发帖。
您应该如何诊断问题:
nil
是“无”,在 ruby 中它被放在NilClass
而NilClass
没有大多数String
或Integer
或Array
类的方法。 因此,如果错误消息说<<
不是nil
的方法,那么这意味着您在假设是数组但它是nil
东西上使用了这个运算符。
现在,如果您看到第 10 行: @@cabins_available <<group[1]
有此错误,并且该运算符正在@cabins_available
上使用,它应该是一个数组,但是因为它是nil
并且它是nil
因为您没有声明它之前,你应该声明它。
请尽量不要只是复制他人的代码,否则您将在每一个新步骤上都一无所知。 尝试对事物进行研究,您会看到已实现,至少足以理解它们。
解决方案:
class TravelagentController < ApplicationController
def index
@cruises = Cruise.all
@cruise_names = []
@cabins_available = []
@cruises.each do |cruise|
@cruise_names <<cruise.name
end
@cabins =Cabin.group(:ship_id).count
@cabins.each do |group|
@cabins_available <<group[1]
@cabins_available <<group[1]
end
puts @cabins_available
puts @cruise_names
end
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.