0

うまくいけば、これは基本的なレールの質問です。私はただ幅広いストロークを学んでいます。

私はレール3.2.8とMechanize2.5.1を使用してスクレイピングをスクリーニングし、Mechanizeの基本的なチュートリアルモデルを使用してGoogle.comをスクレイピングしています(ここ:http://mechanize.rubyforge.org/GUIDE_rdoc.html)。コンソールでは、それは魅力のように機能します。グーグルページのリンクの完全なリストを取得します。今、私は自分のWebページにそのリストが欲しいです。私がハッキングしている方法では、インスタンス変数は、そのエーテルが1つのリンクに対して実行されているという理由だけで最初または最後のリンクを出力するか、実行ごとに再割り当てされます(正しく理解している場合)。私は現在、モデル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 に答える