Может кто-нибудь объяснить, почему я получаю это сообщение об ошибке на localhost: 3000? - PullRequest
0 голосов
/ 30 января 2020

Я получаю следующее сообщение об ошибке на локальном хосте: 3000 при попытке загрузить

неопределенный метод `<< 'для nil: NilClass </p>

Извлеченный источник (около строка № 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

1 Ответ

0 голосов
/ 31 января 2020

Добро пожаловать в stackoverflow.

Пожалуйста, попробуйте узнать основы у кого-то, чтобы вы не были "запуганы" (как вы, возможно, думаете) здесь, так как ваш вопрос довольно простой c, который я Я понимаю, что все начинали в какой-то момент, но должны быть частью обдумывания, а не писать здесь.

Как вам следует диагностировать проблему:

nil is " ничего ", и в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...