Нет папки data c xml файлом.
Во всех дочерних классах, в методе to_xml
объявлена не работающая переменная disk
И я никак не могу понять, как у вас цена и остаток в xml файл попадают?
# А этот метод будет определён у родителя и доопределён у детей
def to_xml
res = REXML::Element.new('product')
res.attributes["price"] = @price
res.attributes["amount_available"] = @amount_available
res
end
А разве метод может быть доопределён? Он же вроде может быть переопределён? или он доопределяется за счёт super дочерних классов. Чего-то я запутался.
res = REXML::Element.new('product')
Выходит таким образом можно любые теги определять?
В родительском классе метод определен, в дочерних переопределен.
Но дочерние методы вызывают родительские с помощью ключевого слова super
. Это и есть вызов родительского метода.
Пересмотри еще раз то место, где мы употребляем это ключевое слово.
Переменная disk
действительно лишняя, можно и без нее обойтись.
Чтобы data/*.xml
появилась, надо сперва запустить программу для наполнения библиотеки.
Чтобы data/.xml* появилась, надо сперва запустить программу для наполнения библиотеки.
Я совсем запутался. Как он там может появиться, когда папки data и xml ффйла изначально нет. И может я чего не так понял, но вроде про создание папки а в ней xml файла, в проге ничего нет?
Я попробовал написать прогу, которая только добовляет товар.
Приложу zip. В xml файле есть результат. И вот здесь не пойму, как добиться того чтобы product — с ценой и остатком — попал в файл xml?
Дима абсолютно прав. Папку data
, как и файл product.xml
нужно создать предварительно. Перезалил программу.
За попадание нового товара в готовый файл data/product.xml
отвечает метод save_to_xml(file_name)
в файле product.rb
. Там всё красноречиво прокомментировано.
Но дочерние методы вызывают родительские с помощью ключевого слова
super
. Это и есть вызов родительского метода.
Обрати также внимание, что метод to_xml
у папы не только создаёт нужную ноду, но и возвращает её. А детский метод to_xml
берёт то, что создал папа, докидывает туда нужные данные и возвращает это как своё творчество (return
в последней строчке пропущен — мы уже большие, знаем, что в ruby он не нужен):
def to_xml
product = super
product.add_element( ... )
product
end