Добро пожаловать в 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