加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读