无法从Mongo DB Rails Rake获得价值

时间:2015-05-28 01:51:59

标签: ruby-on-rails ruby mongodb rake nokogiri

希望你能帮助我解决我无法找到答案的问题。 我有这个应用程序,并试图检索&更新DB中的记录值。

我在rails应用程序中的rake命令如下所示:

task :nokogiri => :environment do

require 'nokogiri'  
require 'open-uri'

doc = Nokogiri::XML(open(url))

  data = doc.at_css(".lister-list")
  movies = data.css('.titleColumn')
  current_time = Time.now.strftime("%d/%m/%Y %H:%M")
    movies.each do |movie|

      headline = movie.text.strip
      found = Movie.where("title" => headline).first

      if found.nil?
        title = Movie.new
        title._id = BSON::ObjectId.new
        title.title = headline
        title.current_time = current_time.to_s
        title.save
        puts "Record created"
      else
      #  arr =  found.to_a.to_json
       # puts arr.title
        puts found.title
        puts "Record exist"
      end
    end
end

问题是我可以输出" arr"对象控制台,但我无法检查标题字段。我一直在说:

rake aborted!
NoMethodError: undefined method `title' for #<String:0x007f68589d93e8>

我在这里做错了什么?我如何用current_time更新记录?

P.S。我是新手,所以你的帮助对我很有帮助,你是最后一个可以帮助我的人。

谢谢!

编辑:答案很简单,功能在哪里,我们必须限制结果并将其设为 .first 。然后我们可以像往常一样获取对象值 found.title

1 个答案:

答案 0 :(得分:1)

else分支中,您这样说:

arr =  found.to_a.to_json

to_json返回String。然后你说:

puts arr.title

但没有String#title方法,因此您获得了NoMethodError。也许你的意思是说:

puts found.title

另外,你真的想说found.to_a.to_json而不是found.to_json吗? to_a调用只会将found包装在单个元素数组中。