Я создаю скрипт импорта с использованием Nokogiri для анализа XML-файла, а затем перебираю узлы, создавая новые «Продукты» в моей базе данных.Все работает нормально, за исключением надоедливого поля цены (которое является плавающей точкой).
Product.create(:name => node.xpath("./text/name/text()"),
:description => node.xpath("./text/desc/text()"),
:brand => node.xpath("./brand/brandName/text()"),
:merchant => node.xpath("../@name"),
>> (A) #:price => 1.99))
>> (B) #:price => node.xpath("./price/buynow/text()"))
>> (C) #:price => node.xpath("./price/buynow/text()").to_f))
Рассматриваемый узел XML выглядит следующим образом ...
<buynow>6.99</buynow>
Когда я пытаюсь использовать строку (A) чтобы проверить, что он работает нормально, но, очевидно, это нежелательно.
Когда я пытаюсь получить строку из узла (B) или (C), моя страница зависает, WEBrick необходимо перезапустить (нетошибки в терминале), и в журнале появляется следующая ошибка:
NoMethodError (undefined method `to_f' for [#<Nokogiri::XML::Text:0x81f5220c "6.99">]:Nokogiri::XML::NodeSet):
Примечание: такая же ошибка появляется, даже если я не вызываю явно метод to_f
Полагаю, мне нужно каким-то образом преобразовать значение узла в число с плавающей точкой, но очевидный способ - вызвать ошибку!
Может кто-нибудь пролить свет на этот вопрос?