ruby-on-rails – 如何在数组中访问哈希?
发布时间:2020-12-17 03:27:26 所属栏目:百科 来源:网络整理
导读:我正在尝试使用Nokogiri从 XML文件中获取一些数据,然后将其保存到数据库中. 我正在使用的代码是: def self.import_from_feed(feed) doc = Nokogiri::XML(open(feed)) @products = doc.xpath('/merchantProductFeed/merchant/prod').map do |i| { 'name' = i
我正在尝试使用Nokogiri从
XML文件中获取一些数据,然后将其保存到数据库中.
我正在使用的代码是: def self.import_from_feed(feed) doc = Nokogiri::XML(open(feed)) @products = doc.xpath('/merchantProductFeed/merchant/prod').map do |i| { 'name' => i.xpath('text/name').inner_text,'link' => i.xpath('uri/mLink').inner_text,'description' => i.xpath('text/desc').inner_text,'price' => i.xpath('price/buynow').inner_text } end end 在Rails的控制台中,我运行了Products.import_from_feed(myfeedgoeshere)并得到: [{"price"=>"8.00","name"=>"BASIC GIRL BOXER","description"=>"Boxer shorts Elasticated waist with Bench logo Button fly","link"=>"http://www.bench.co.uk/womenswear/underwear/basic-girl-boxer/GY001X/"},{"price"=>"10.00","name"=>"CMTL PK SPORTY SOCKS","description"=>"Ankle sockBench logo on sole of each sockContrasting stripe around ankle","link"=>"http://www.bench.co.uk/womenswear/underwear/cmtl03593-3-pk-sporty-socks/BK014-SK034/"},{"price"=>"12.00","name"=>"A PK STRING UNDERWEAR","description"=>"Plain thong Bench logo along waistband Bench tag on front","link"=>"http://www.bench.co.uk/womenswear/underwear/a4771-3pk-string-underwear/PK023-BK001-WH001/"},{"price"=>"8.00","link"=>"http://www.bench.co.uk/womenswear/underwear/basic-girl-boxer/WH001/"},{"price"=>"45.00","name"=>"OSPREY TRAINER","description"=>"Lace up trainers Bench logo on tongue and back of heelBench logo on end of trainer","link"=>"http://www.bench.co.uk/menswear/footwear/osprey-trainer/WH001-BL081/"},"description"=>"Lace up trainers Bench logo on tongue and back of heelBench logo on said of trainer","link"=>"http://www.bench.co.uk/menswear/footwear/osprey-trainer/WH001-GR128/"},{"price"=>"90.00","name"=>"META TRENCH","description"=>"Vintage look leather bootLace upFabric sidesPull on tab on heel","link"=>"http://www.bench.co.uk/womenswear/footwear/meta-trench/BK001/"}] (^ Truncated) 有人能告诉我如何访问数组的元素吗?循环,所以我可以得到@ products.price,@ products.description等? 编辑:我试过@products [0],产品[0],我试过没有运气就打印键/值对. 我不是要求你做所有的工作,我认为这里有一些概念在起作用 – 足以让我碰到砖墙. 第2部分:额外信用! 根据选定的答案,这应该工作,对吧? @products.each do |h| h.save end 我明白了: NoMethodError: undefined method `save' for #<Hash:0x10388c7d8> 解决方法
由于@products的每个元素都是一个哈希,你可以这样做:
@products.each do |h| puts "#{h['price']},#{h['description']}" end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |