Nokogiriを使用してXMLファイルを解析し、データベース内に新しい「製品」を作成するノードをループするインポートスクリプトを作成しています。厄介な価格フィールド(フロート)を除いてすべてがうまくいく。Nokogiriを使用したNoMethodError
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メソッドを呼び出していない場合でも表示されますが、明白な方法でありますエラーが発生しました!
誰かがこの光を放つことができますか?
ありがとうございます。私は答えがなかったので、あなたが欠けていたものを文書化するためのあなたのコメントにinner_textメソッド – Zinc
+1がありませんでした。 –