0

希望这是一个基本的 Rails 问题。我只是在学习大笔画。

我正在使用带有 Mechanize 2.5.1 的 rails 3.2.8 进行屏幕抓取,并且我正在使用 Mechanize 的基本教程模型来抓取 Google.com(此处: http: //mechanize.rubyforge.org/GUIDE_rdoc.html)。在控制台中,它就像一个魅力。我得到了谷歌页面链接的完整列表。现在我想要我的网页上的那个列表。我破解它的方式,我的实例变量要么打印第一个或最后一个链接,因为它的以太只为一个链接运行,或者每次运行都重新分配(如果我理解正确的话)。我目前没有使用模型 b/c 它没有击中我的数据库(这是错的吗?)。只有控制器和视图与路由......

“views/listing/results.html.erb”包括:

<ul>
<li><%= link_to @listings %></li>
</ul> 

“controllers/listing_controller.rb”只有:

class ListingController < ApplicationController 
  def results
    require 'rubygems'
    require 'mechanize'
    agent = Mechanize.new
    page = agent.get('http://google.com')
    page.links.each do |link| # for each link print out the link.
      puts link.text
      @listings = link.text # this is getting re-assigned each time so ends up as last one
      # return @listings # returns first item on list 
    end
  end
end

“config/routes.rb”文件包括:

match '/listing/results' => 'listing#results', :as => 'listing_button'

我知道有办法做到这一点,但我必须在所有错误的地方寻找答案。我已经尝试了几种不同的情况来分配实例变量,但也许我做错了,我不知道。

谢谢

麦克风

4

1 回答 1

0
#Controller 
@listings = page.links.collect(&:text)

#View
<% @listings.each do |listing| %>
  <%= listing %>
<% end %>
于 2012-10-17T13:55:00.813 回答