繁体   English   中英

有人可以解释为什么我在 localhost:3000 上收到此错误消息吗?

[英]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​​ 中它被放在NilClassNilClass没有大多数StringIntegerArray类的方法。 因此,如果错误消息说<<不是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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM