Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails机械化。单击未定义的方法“单击';为了#_Ruby On Rails_Mechanize - Fatal编程技术网

Ruby on rails rails机械化。单击未定义的方法“单击';为了#

Ruby on rails rails机械化。单击未定义的方法“单击';为了#,ruby-on-rails,mechanize,Ruby On Rails,Mechanize,我在rails中创建了一个mechanize任务。这很简单 task :estimateone => :environment do require 'mechanize' mechanize = Mechanize.new page = mechanize.get('https://www.theurbanlist.com/brisbane/a-list/50-brisbane-cafes-you-should-have-eaten-breakfast-at') pag

我在rails中创建了一个mechanize任务。这很简单

task :estimateone => :environment do
  require 'mechanize'

  mechanize = Mechanize.new
  page = mechanize.get('https://www.theurbanlist.com/brisbane/a-list/50-brisbane-cafes-you-should-have-eaten-breakfast-at')
  page.css('ol li a').each do |link|
    link.click
  end

end
但是我犯了这个错误,我做错了什么

rake aborted!
NoMethodError: undefined method `click' for #<Nokogiri::XML::Element:0x00007ffb4b281830>
/Users/jeremybray/RubymineProjects/OpportunityFinder/lib/tasks/getlead.rake:8:in `block (2 levels) in <top (required)>'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:204:in `block in each'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:203:in `upto'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:203:in `each'
/Users/jeremybray/RubymineProjects/OpportunityFinder/lib/tasks/getlead.rake:7:in `block in <top (required)>'
/Users/jeremybray/.rvm/gems/ruby-2.4.2@global/gems/rake-12.3.1/exe/rake:27:in `<top (required)>'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/bin/ruby_executable_hooks:15:in `eval'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/bin/ruby_executable_hooks:15:in `<main>'
rake中止!
NoMethodError:未定义的方法“单击”用于#
/Users/jeremybray/RubymineProjects/OpportunityFinder/lib/tasks/getlead.rake:8:in'block(2层)in'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:204:in`block in each'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:203:in'upto'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/gems/nokogiri-1.8.4/lib/nokogiri/xml/node_set.rb:203:in“each”
/Users/jeremybray/RubymineProjects/OpportunityFinder/lib/tasks/getlead.rake:7:in'block in'
/Users/jeremybray/.rvm/gems/ruby-2.4。2@global/gems/rake-12.3.1/exe/rake:27:in`'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/bin/ruby\u executable\u hooks:15:in'eval'
/Users/jeremybray/.rvm/gems/ruby-2.4.2/bin/ruby\u executable\u hooks:15:in`'

由于点击是一种机械化方法,您应该使用它的实例作为点击方法的接收者,而不是链接,这是Nokogiri方法

状态为,它接收元素,单击它并返回获取的页面

尝试:

-- snip --
page.css('ol li a').each do |link|
  mechanize.click(link)
end
Page#带有
的链接将返回链接,css将返回html元素:

page.links_with(css: 'ol li a').each do |link|
  link.click
end

还有,有这么多不同的文档,谢谢分享