Ajax_indicator
закроется через 10 сек Frontend_notifier_close_notification_ico
На сервере произошла ошибка. Мы уже уведомлены об этом и скоро разберемся.
Мы учим полезным скиллам
Вы не залогинены. Чтобы быстро подписываться на интересующие разделы и задавать вопросы в Q/A вам нужно войти или зарегистрироваться.

Язык программирования Ruby -> вопросы

Upvote Upvote_done
0
Downvote Downvote_done

Появляется ошибка "undefined local variable or method `weight'" если использовать только "RealItem" объекты.

задал v_o_v_i 3 месяца назад к скринкасту запись и чтение файлов.
Добрый день!
Окажите содействие, подскажите пожалуйста в чем проблема: в файле init.rb создаю только "RealItem" объекты:
@items = []
@items << RealItem.new({ :price => 101, :weight => 100, :name => "car" })
@items << RealItem.new({ :weight => 100,  :price => 101, :name => "kettle" })
@items << RealItem.new({ :weight => 100,  :price => 101, :name => "dishwasher" })
но при выполнении команды "ruby add_to_cart.rb testlist car kettle"
постоянно появляется ошибка: undefined local variable or method `weight' for # (NameError)

Очень хочется понять почему она возникает.
Спасибо.
Преждем чем вы сможете написать ответ, вы должны зарегистрироваться или войти.

Ответы:

Upvote Upvote_done
0
Downvote Downvote_done
Correct_answer_done
ответил Senich 2 месяца назад
Было тоже самое, в классе Item в методе #initialize не было прописано @weight
добавил - заработало.attr_reader :real_price, :name, :weight
attr_writer :price
def initialize(options = {})
@real_price = options[:price]
@name = options[:name]
@weight = options[:weight]

Комментарии к этому ответу:

Большое спасибо за ответ. Просто я думал, что мы специально наследуемся от класса Item и создаем два класса: RealItem и VirtualItem. В RealItem как раз мы и инициализировали @weight, что бы RealItem и VirtualItem отличались наличием этой переменной.
Главное, что смысл понятен.

— написал v_o_v_i